Redis - 為什么redis集群的最大槽數是16384個?


為什么是16384(2^14)個?

在redis節點發送心跳包時需要把所有的槽放到這個心跳包里,以便讓節點知道當前集群信息,16384=16k,在發送心跳包時使用char進行bitmap壓縮后是2k(2 * 8 (8 bit) * 1024(1k) = 16K),也就是說使用2k的空間創建了16k的槽數。

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

參考文獻

作者:泰迪的bagwell
鏈接:https://www.jianshu.com/p/de268f62f99b
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM