Redis群集vs Twemproxy-已移动响应

时间:2018-11-01 08:55:50

标签: redis redis-sentinel redis-cluster twemproxy

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

我知道集群每天都是赢家。我只是对MOVED的回复表示怀疑。如果是MOVED响应,则客户端将连接另一个节点;如果是重新分片,则客户端可能不得不再次连接另一个节点。但是在Twem的情况下,它知道数据在哪里,因此永远不会收到MOVED响应。

Twem存在不同的问题,例如增加了跃点,可能会增加总周转时间,添加新节点的问题,或者如果它弹出一些节点,它将无法满足对该节点上存在的密钥的请求。例如,为我的Redis实例和twem本身的HA机制设置了哨兵。

有人可以建议我,我应该选择Twem还是Cluster?我正在考虑与Twem一起使用,因为如果出现MOVED响应,我将不会往返。但是考虑到上述问题,我对此表示怀疑。

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

1 个答案:

答案 0 :(得分:1)

首先,我对Twemproxy并不熟悉,所以我只谈论您对Redis Cluster的担忧。

Redis客户端可以从Redis Cluster获取完整的插槽-节点映射,即密钥的位置。它可以在客户端缓存映射,并将请求发送到正确的节点。因此,大多数情况下,它不会被重定向,即得到 MOVED 消息。

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

体面的客户端库可以进行上述优化,以提高效率。因此,如果您的客户库进行了这种优化,则无需担心 MOVED 罚款。