redis槽位為什麼是16384個?

2022-06-09 23:39:15 字數 448 閱讀 4406

參考 

slot總共有16384個,這個數字是由redis的作者給定的乙個比較合理的資料,crc16演算法產生的雜湊值有16bit,也就是說有2^16=65536個值,但是為什麼只取了16384個槽?因為redis集群的設計是節點間會相互ping-pong通訊,那就會有訊息產生,槽位、節點數越大,通訊需要攜帶的資料也就越大,而節點至少每秒會傳送一次ping訊息,網路資源負荷就很高,實際場景中的redis節點資料不會超過1000個,而節點資料小於1000的時候,16384個槽位足夠使用了。

總結:因為redis-cluster集群之間會互相通訊,需要攜帶一定的資料,這個資料量會隨著槽位地增加而增大造成網路擁塞,降低了redis的效能。redis-cluster的節點一般不會超過1000,而1000以內,16384個槽完全夠用了,而且效能也處於健康的狀態。可以理解為設計者針對實際使用情況的優化設計。

為什麼redis集群的最大槽數是16384個

redis 集群並沒有使用一致性hash,而是引入了雜湊槽的概念。redis 集群有16384 2 14 個雜湊槽,每個key通過crc16校驗後對16384取模來決定放置哪個槽,集群的每個節點負責一部分hash槽。這種結構很容易新增或者刪除節點,並且無論是新增刪除或者修改某乙個節點,都不會造成集群...

什麼是redis,為什麼要學習redis

分布式系統 nosql資料庫 redis的定義 redis對比mysql 分布式系統 distributed system 由多台計算機和通訊的軟體元件通過計算機網路連線 本地網路或廣域網 組成。分布式系統是建立在網路之上的軟體系統。正是因為軟體的特性,所以分布式系統具有高度的內聚性和透明性。因此,...

Redis為什麼是單執行緒

經過多方資料收集 總結 思考,結論如下 準確地來說,該問題是 為什麼redis採用單程序單執行緒模型 我們從兩個層次去理解 第乙個層次 我們多執行緒的使用情景是io密集型,目的是為了充分利用cpu資源。也就是說當乙個執行緒io等待的時候,另乙個執行緒可以進行執行,達到充分利用cpu資源的效果,不要讓...