redis有多少个槽

互联网 19-6-5
Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。Redis 集群没有使用一致性hash, 而是引入了哈希槽的概念。

使用哈希槽的好处就在于可以方便的添加或移除节点。

在redis中,把一个key-value键值对放入的最简单的方式就是set key value,如下所示:

127.0.0.1:7000> set key value -> Redirected to slot [12539] located at 192.168.39.153:7002 OK 192.168.39.153:7002> get key "value" 192.168.39.153:7002>

可以看出,当我们把key的值设置成为value的时候,客户端被重定向到了另一个节点192.168.39.153:7002,这是因为key对应的槽位是12359,所以我们的key-value就被放到了槽12359对应的节点,192.168.39.153:7002了。

Redis Cluster是自己做的crc16的简单hash算法,没有用一致性hash。Redis的作者认为它的crc16(key) mod 16384的效果已经不错了,虽然没有一致性hash灵活,但实现很简单,节点增删时处理起来也很方便。

节点增删时不丢失数据和hash算法没什么关系,不丢失数据要求的是一份数据有多个副本。

当你往Redis Cluster中加入一个Key时,会根据crc16(key) mod 16384计算这个key应该分布到哪个hash slot中,一个hash slot中会有很多key和value。你可以理解成表的分区,使用单节点时的redis时只有一个表,所有的key都放在这个表里;改用Redis Cluster以后会自动为你生成16384个分区表,你insert数据时会根据上面的简单算法来决定你的key应该存在哪个分区,每个分区里有很多key。

以上就是redis有多少个槽的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: redis
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:redis一个hash能存多少field

相关资讯