Redis Cluster vs Twemproxy - 移动响应

Redis Cluster vs Twemproxy - MOVED responses

我想将 Redis 用于特定用例。我不确定要使用 Redis 集群还是使用 Twemproxy + Sentinel。

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

Twem 存在不同的问题,例如添加跃点,可能会增加整体周转时间,添加新节点时出现问题,或者如果它弹出一些节点,它将无法满足对现有密钥的请求那个节点。额外的维护头痛,例如,为我的 Redis 实例设置哨兵,并为 twem 本身的 HA 设置机制。

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

P.S。我打算为 Redis 使用 Jedis 客户端(如果有帮助的话)。

首先,我对Twemproxy不是很熟悉,所以我只说一下大家对Redis Cluster的关注。

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

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

一个像样的客户端库可以通过上面的优化来提高效率。因此,如果您的客户端库具有此优化,则无需担心 MOVED 惩罚。