【发布时间】:2020-06-29 17:33:40
【问题描述】:
传统(常规)redis
根据我读到的here,在使用 memcached 时:
- 每个客户端都知道所有服务器
- 服务器之间不相互通信
- 如果客户端希望设置或读取与某个键对应的值,客户端的库首先计算该键的哈希值以确定使用哪个服务器。
我的理解是 Redis(不是 Redis 集群)强加了相同的要求和逻辑。也就是说,客户端需要知道他们需要将数据写入哪些服务器(例如,使用散列或等价物)。
Redis 集群
使用 Redis 集群,情况似乎有所不同。它看起来像:
- 大师们互相交流
- master 与复制 slave 对话
这似乎使它更接近例如etcd 或 Zookeeper,只是它可能都在内存中(因此缓存速度更快)。
也就是说,在etcd 中,可以写入任何节点(追随者或领导者),例如以 RR(循环)方式(即只要 etcd 节点响应),并且不必须知道数据是如何分片 strong> 读取/写入节点时。这是因为etcd 使用共识算法(Raft)跨节点分发数据,而etcd 尝试在所有节点上写入和存储所有数据。
这是否也适用于 Redis 集群?或者在读/写集群时是否需要知道每个键的位置(以及要命中的节点)?
【问题讨论】: