日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis 哈希槽

發布時間:2024/1/17 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis 哈希槽 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Redis 集群中內置了 16384 個哈希槽,當需要在 Redis 集群中放置一個 key-value

?

時,redis 先對 key 使用 crc16 算法算出一個結果,然后把結果對 16384 求余數,

這樣每個 key 都會對應一個編號在 0-16383 之間的哈希槽,redis 會根據節點數量大

致均等的將哈希槽映射到不同的節點。

Redis 集群沒有使用一致性hash, 而是引入了哈希槽的概念。

Redis 集群有16384個哈希槽,每個key通過CRC16校驗后對16384取模來決定放置哪個槽.集群的每個節點負責一部分hash槽。這種結構很容易添加或者刪除節點,并且無論是添加刪除或者修改某一個節點,都不會造成集群不可用的狀態。

使用哈希槽的好處就在于可以方便的添加或移除節點。

當需要增加節點時,只需要把其他節點的某些哈希槽挪到新節點就可以了;

當需要移除節點時,只需要把移除節點上的哈希槽挪到其他節點就行了;

在這一點上,我們以后新增或移除節點的時候不用先停掉所有的 redis 服務。

?

?

"用了哈希槽的概念,而沒有用一致性哈希算法,不都是哈希么?這樣做的原因是為什么呢?"
Redis Cluster是自己做的crc16的簡單hash算法,沒有用一致性hash。Redis的作者認為它的crc16(key) mod 16384的效果已經不錯了,雖然沒有一致性hash靈活,但實現很簡單,節點增刪時處理起來也很方便。

"為了動態增刪節點的時候,不至于丟失數據么?"
節點增刪時不丟失數據和hash算法沒什么關系,不丟失數據要求的是一份數據有多個副本。

“還有集群總共有2的14次方,16384個哈希槽,那么每一個哈希槽中存的key 和 value是什么?”
當你往Redis Cluster中加入一個Key時,會根據crc16(key) mod 16384計算這個key應該分布到哪個hash slot中,一個hash slot中會有很多key和value。你可以理解成表的分區,使用單節點時的redis時只有一個表,所有的key都放在這個表里;改用Redis Cluster以后會自動為你生成16384個分區表,你insert數據時會根據上面的簡單算法來決定你的key應該存在哪個分區,每個分區里有很多key。

總結

以上是生活随笔為你收集整理的Redis 哈希槽的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。