首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >redis集群使用一致的散列吗?

redis集群使用一致的散列吗?
EN

Stack Overflow用户
提问于 2018-05-09 06:24:53
回答 2查看 3.1K关注 0票数 9

我用的是redis集群3.0.1。

我认为redis集群使用一致的散列。在一致散列的情况下,哈希槽类似于虚拟节点。Cassandra的数据分布几乎与redis集群相同,这篇文章说这是一致的散列。

红簇图层表示,redis集群并不使用一致的散列。

我错过了什么?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-09 10:28:13

您是对的,虚拟节点与散列槽相当简单。

但是虚拟节点并不是一致散列的最初概念,而更像是Cassandra在一致散列的基础上使用的技巧。因此,对于redis来说,不使用一致的散列也是可以的。

所以不用费心用词了。

票数 7
EN

Stack Overflow用户

发布于 2021-12-06 02:41:31

当一致散列将服务器散列成一个环时,它提供了许多很好的属性:

  1. 服务器在环中随机分布,有利于平衡集群中的负载。
  2. 添加/删除服务器仅影响其邻居,尽量减少数据迁移。

但是,我认为您无法控制哪个键指向哪个服务器:也就是说,我无法执行以下任务:

代码语言:javascript
复制
key 1-99 ==> serverA
key 100 ==> serverB

// I can probably reach the same traffic split, 99:1 
// by given more virtual nodes to serverA, but it won't guarantee
// key 1 and key 99 is served by the same machine 

这在redis中是允许的,redis使用散列槽,我认为它是来自哈希值->服务器的显式映射。这给了您完全的控制,特别是它启用了多键事务:

代码语言:javascript
复制
key Alice, key Bob ==> serverA
// move 100$ from Alice's bank account to Bob's in one operation
// no need special technique like 2 phase commit

关键的->服务器映射现在由您自己管理,而不是通过一致散列来管理,缺点是管理员有更多的工作/责任,Redis还提供了一些建议来帮助您进行管理:rebalancereshard

免责声明:这是我自己的理解(这是我的资料来源),我希望我能在堆叠溢出事件上@redis_dev,让他们校对我的答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50246763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档