redis-cluster最大哈希槽數(shù)16384個?? why

關(guān)于16384 作者的回答

redis-cluster作者回答

處于心跳檢測發(fā)包容量考慮

16384(2^14)
在redis節(jié)點(diǎn)發(fā)送心跳包時需要把所有的槽放到這個心跳包里,以便讓節(jié)點(diǎn)知道當(dāng)前集群信息,16384=16k,在發(fā)送心跳包時使用char進(jìn)行bitmap壓縮后是2k(2 * 8 (8 bit) * 1024(1k) = 2K),也就是說使用2k的空間創(chuàng)建了16k的槽數(shù)。

雖然使用CRC16算法最多可以分配65535(2^16-1)個槽位,65535=65k,壓縮后就是8k(8 * 8 (8 bit) * 1024(1k) = 8K),也就是說需要需要8k的心跳包,作者認(rèn)為這樣做不太值得;并且一般情況下一個redis集群不會有超過1000個master節(jié)點(diǎn),所以16k的槽位是個比較合適的選擇。

作者也明確表示,master節(jié)點(diǎn)不要超過1000時,使用redis-cluster。超過1000的超大redis集群,元數(shù)據(jù)的傳輸數(shù)據(jù)量太大,加劇主從同步的延遲。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容