Redis 클러스터는 일관된 해싱을 사용하지 않지만 해시 슬롯 개념을 도입합니다. Redis 클러스터에는 16384개의 해시 슬롯이 있습니다. 각 키는 CRC16 확인 후 모듈로 16384로 검사되어 배치할 슬롯을 결정합니다. 그런데 해시 슬롯 개수는 왜 16384(2^14)일까요? 이 질문은 github에서 제기되었는데, 저자도 이에 대한 답변을 간략하게 정리해 보겠습니다.
왜 16384(2^14)인가요?
redis 노드가 하트비트 패킷을 보낼 때 노드가 현재 클러스터 정보를 알 수 있도록 모든 슬롯을 하트비트 패킷에 넣어야 합니다. 하트비트 패킷을 보낼 때 비트맵 압축 후 2k입니다. 2 * 8 (8 bit) * 1024(1k) = 2K
) 즉, 2k 공간을 사용하여 16k 슬롯이 생성됩니다. 2 * 8 (8 bit) * 1024(1k) = 2K
),也就是说使用2k的空间创建了16k的槽数。
虽然使用CRC16算法最多可以分配65535(2^16-1)个槽位,65535=65k,压缩后就是8k(8 * 8 (8 bit) * 1024(1k) = 8K
8 * 8(8비트) * 1024(1k) = 8K)
) 즉, 8k 하트비트 패킷이 필요하다고 저자는 생각하며 일반적으로 Redis 클러스터에는 1,000개 이상의 마스터 노드가 없으므로 16k 슬롯이 더 적절한 선택입니다. . 작성자 원래 단어:
1. 일반 하트비트 패킷은 노드의 전체 구성을 전달합니다. 이 구성은 이전 구성을 업데이트하기 위해 멱등적 방식으로 이전 구성으로 대체될 수 있습니다. 즉, 노드의 슬롯 구성이 원시 형식으로 포함되어 있으며 16k 슬롯 구성은 2k의 메모리를 사용하지만 65k 슬롯을 사용하면 8k의 메모리를 사용합니다. 2 동시에 다른 설계 장단점으로 인해 Redis 클러스터를 1,000개 노드 이상으로 확장하는 것은 불가능합니다. 따라서 각 기본 장치에 최대 1000개의 충분한 슬롯이 있는지 확인하려면 16k가 더 적합합니다. Redis의 노드 구성 정보는 비트맵 저장소를 통해 전송됩니다. 압축 비율은 슬롯 및 노드 수와 큰 관계가 있습니다. 왜냐하면 N이 작을 때 비트맵에는 슬롯/N 비트가 설정되어 있기 때문입니다. 설정된 비트 비율이 높습니다.) [슬롯 수/노드 수] N이 클수록 압축 비율은 작아집니다.더 많은 Redis 관련 기술 기사를 보려면 Redis Tutorial 칼럼을 방문하여 알아보세요!
🎜위 내용은 Redis에 16384개의 슬롯이 있는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!