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有多少hash槽的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Redis是现在最热门的key-value数据库,Redis的最大特点是key-value存储所带来的简单和高性能;相较于MongoDB和Redis,晚一年发布的ES可能知名度要低一些,ES的特点是搜索,ES是围绕搜索设计的。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于redis的一些优势和特点,Redis 是一个开源的使用ANSI C语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式存储数据库,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis Cluster集群收缩主从节点的相关问题,包括了Cluster集群收缩概念、将6390主节点从集群中收缩、验证数据迁移过程是否导致数据异常等,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis实现排行榜及相同积分按时间排序,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于原子操作中命令原子性的相关问题,包括了处理并发的方案、编程模型、多IO线程以及单命令的相关内容,下面一起看一下,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis实现排行榜及相同积分按时间排序,本文通过实例代码给大家介绍的非常详细,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了bitmap问题,Redis 为我们提供了位图这一数据结构,位图数据结构其实并不是一个全新的玩意,我们可以简单的认为就是个数组,只是里面的内容只能为0或1而已,希望对大家有帮助。

redis error就是redis数据库和其组合使用的部件出现错误,这个出现的错误有很多种,例如Redis被配置为保存数据库快照,但它不能持久化到硬盘,用来修改集合数据的命令不能用。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1
強大的PHP整合開發環境