다음 칼럼에서는 Redis 튜토리얼Redis 원리 및 구현 분석을 소개하겠습니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다! 1 redis란 무엇입니까
redis의 경우 일반적으로 Jedis를 사용합니다(연결 풀 JedisPool도 제공합니다)
redis에서 키는 byte[]입니다. (string)
redis의 데이터 구조(값):
String, list, set, orderset, hash
2 redis의 사용
String:
list(double 연결된 목록)
1개를 사용할 수 있습니다. Redis의 목록은 큐, 힙, 스택을 시뮬레이션합니다.
2개의 Moments 좋아요(1개의 Moments 콘텐츠 문, 여러 개의 likes 문)
규정: Moments 콘텐츠 형식:
1, 콘텐츠: 사용자:x: post:x 저장할 콘텐츠
2, like: post:x:저장할 좋은 목록(해당 아바타를 꺼내서 표시)
hash(해시맵)
1 개체 저장
2 그룹
3 문자열과 해시 데이터의 차이
네트워크를 통해 전송할 때는 직렬화를 거쳐야 네트워크를 통해 전송할 수 있습니다. 그런 다음 문자열 형식을 사용할 때는 직렬화를 해야 하며 해시도 필요합니다. 저장 시에는 해시를 더 풍부하게 저장할 수 있지만, 역직렬화 시 문자열의 역직렬화는 상대적으로 낮고, 해시의 직렬화 및 역직렬화는 해시 클래스에 상대적입니다. 더 복잡하므로 비즈니스 시나리오에 따라 데이터가 자주 수정되는 경우 성능을 위해 문자열을 사용할 수 있습니다. 데이터가 자주 변경되지 않는 경우 해시를 사용하면 데이터 저장이 풍부하므로 다양하게 저장할 수 있습니다. 데이터 유형
4 Redis 지속성 방법:
메모리의 데이터를 하드 디스크에 비동기식으로 쓸 수 있습니다. 두 가지 방법: RDB(기본값) 및 AOF
RDB 지속성 원칙: bgsave 명령에 의해 트리거된 다음 상위 프로세스는 포크 작업을 수행하여 하위 프로세스를 생성하고, 하위 프로세스는 RDB 파일을 생성하고, 상위 프로세스의 메모리를 기반으로 임시 스냅샷 파일을 생성하고, 완료 후 원본 파일의 원자적 교체를 수행합니다. 복사본을 생성하여 하드 디스크에 저장하는 시간)
장점: Redis는 RDB를 로드하여 AOF보다 훨씬 빠르게 데이터를 복구합니다.
단점: 매번 RDB를 생성하는 큰 오버헤드와 비실시간 지속성으로 인해
AOF 지속성 원칙: 전원이 켜진 후 Redis가 데이터를 수정하는 명령을 실행할 때마다 이 명령을 AOF 파일.
장점: 실시간 지속성.
단점: 따라서 AOF 파일 크기가 점차 커지며, 파일 크기를 줄이기 위해 정기적으로 다시 쓰기 작업을 수행해야 합니다. 로딩이 느립니다.
5 Redis 단일 스레드가 왜 이렇게 빠른가요
Redis는 단일입니다. -스레드인데 왜 여전히 그렇게 빠른가요?
이유 1: 단일 스레드, 스레드 간 경쟁 방지
이유 2: 메모리에 있으며 메모리를 사용하므로 디스크 io를 줄일 수 있음
이유 3: 멀티플렉싱 모델 , 버퍼를 사용하여 개념을 구현합니다.
6 마스터가 다운되었을 때 Redis를 작동하는 방법
6.1 10초마다 각 S 노드(센티넬 노드)는 최신 토폴로지 구조를 얻기 위해 마스터 노드와 슬레이브 노드에 info 명령을 보냅니다.
6.2 2초마다 각 S 노드는 S 노드의 정보를 특정 채널로 보냅니다. 마스터 노드의 판단과 현재 Sl 노드의 정보,
동시에 각 Sentinel 노드도 이 채널을 구독하여 다른 S 노드와 그들의 판단에 대해 알아봅니다.
6.3 1초마다 각 S 노드는 하트비트 감지(하트비트 감지 메커니즘)를 위해 마스터 노드, 슬레이브 노드 및 기타 S 노드에 ping 명령을 보내 여부를 확인합니다. 이 노드는 현재 도달 가능합니다
3번의 하트비트 감지 후 투표를 하고, 절반 이상의 투표를 받으면 해당 노드는 마스터로 간주됩니다.
7 redis 클러스터
Redis 클러스터의 노드는 ping/pong 메시지를 통해 노드 통신을 실현합니다. 메시지는 노드 슬롯 정보를 전파할 뿐만 아니라 마스터-슬레이브 상태, 노드 실패 등과 같은 다른 상태도 전파할 수 있습니다. 따라서 오류 검색은 메시지 전파 메커니즘을 통해 실현됩니다. 주요 링크에는 주관적 오프라인(pfail)과 객관적인 오프라인(fail)이 포함됩니다. 주관적 오프라인:
위 내용은 Redis 원리 및 구현 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!