0

我想将 Redis 用于特定的用例。我不确定使用 Redis 集群或 Twemproxy + Sentinel。

我知道集群在任何一天都是赢家。由于 MOVED 响应,我只是持怀疑态度。在 MOVED 响应的情况下,客户端将连接另一个节点,并且在重新分片的情况下,它可能必须再次连接另一个节点。但在 Twem 的情况下,它知道数据所在的位置,因此它永远不会得到 MOVED 响应。

Twem 有不同的问题,例如添加的跃点,可能会增加整体周转时间,添加新节点的问题,或者如果它弹出一些节点,它将无法为该节点上存在的密钥的请求提供服务。额外的维护头痛,如我的 Redis 实例的哨兵和 twem 本身的 HA 机制。

谁能建议我,我应该选择 Twem 还是 Cluster?我正在考虑和 Twem 一起去,因为在 MOVED 响应的情况下我不会来回走动。但考虑到上述问题,我对此持怀疑态度。

PS 我打算将 Jedis 客户端用于 Redis(如果有帮助的话)。

4

1 回答 1

3

首先,我对 Twemproxy 并不熟悉,所以我只谈谈你对 Redis Cluster 的顾虑。

Redis 客户端可以从 Redis Cluster 中获取完整的 slot-node 映射,即 key 的位置。它可以在客户端缓存映射,并将请求发送到正确的节点。所以大多数时候,它不会被重定向,即得到MOVED消息。

但是,如果您添加/删除节点或重新分片数据集,客户端将收到MOVED消息,因为它仍然使用旧映射。在这种情况下,客户端可以更新其本地缓存,任何后续请求都将发送到正确的节点,即不再有MOVED消息。

一个体面的客户端库可以通过上述优化来提高效率。所以如果你的客户端库有这个优化,你就不用担心MOVED惩罚了。

于 2018-11-01T10:01:36.090 回答