Redis群集与Twemproxy-移动响应

Redis群集与Twemproxy-移动响应,redis,redis-sentinel,redis-cluster,twemproxy,Redis,Redis Sentinel,Redis Cluster,Twemproxy,我想将Redis用于特定的用例。我不确定是否使用Redis群集或Twemproxy+Sentinel 我知道集群随时都是赢家。我只是对感动的回应表示怀疑。在移动响应的情况下,客户端将连接另一个节点,在重新存储的情况下,它可能必须再次连接另一个节点。但在Twem的情况下,它知道数据驻留在哪里,因此永远不会得到移动响应 Twem存在不同的问题,如增加的跃点,可能会增加总周转时间,增加新节点的问题,或者如果它弹出一些节点,它将无法为该节点上存在的密钥请求提供服务。额外的维护头疼,比如,我的Redis实

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

我知道集群随时都是赢家。我只是对感动的回应表示怀疑。在移动响应的情况下,客户端将连接另一个节点,在重新存储的情况下,它可能必须再次连接另一个节点。但在Twem的情况下,它知道数据驻留在哪里,因此永远不会得到移动响应

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

有谁能建议我,我是用Twem还是Cluster?我想和Twem一起去,因为我不会在激动的反应中来回走动。但考虑到上述担忧,我对此持怀疑态度


另外,我计划在Redis上使用绝地客户端(如果有帮助的话)。

首先,我对Twemproxy不熟悉,所以我只谈一下您对Redis集群的关注

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

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


一个好的客户端库可以进行上述优化,以提高效率。因此,如果您的客户端库进行了此优化,您就不必担心移动的损失。

首先,我不熟悉Twemproxy,所以我只谈一下您对Redis Cluster的担忧

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

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


一个好的客户端库可以进行上述优化,以提高效率。因此,如果您的客户机库进行了此优化,您就不必担心移动后的损失。

感谢@。我从您的回答中了解到,这意味着客户端将定期从集群同步密钥的位置。如果我有很多密钥,客户端是否能够加载内存中的所有密钥?@Tarun NO。客户端只需要一个非常小的插槽节点映射。对于给定的密钥,客户端可以动态计算密钥的插槽号,即CRC16,查找插槽节点映射以找到相应的节点,并向该节点发送请求。谢谢。我检查了莴苣和绝地武士。我可以在绝地武士身上找到这种东西,但在莴苣身上找不到。我想不是所有的客户都提供这个。不管怎样,我还是要用绝地武士。所以谢谢你在这里帮助我。谢谢你。我从您的回答中了解到,这意味着客户端将定期从集群同步密钥的位置。如果我有很多密钥,客户端是否能够加载内存中的所有密钥?@Tarun NO。客户端只需要一个非常小的插槽节点映射。对于给定的密钥,客户端可以动态计算密钥的插槽号,即CRC16,查找插槽节点映射以找到相应的节点,并向该节点发送请求。谢谢。我检查了莴苣和绝地武士。我可以在绝地武士身上找到这种东西,但在莴苣身上找不到。我想不是所有的客户都提供这个。不管怎样,我还是要用绝地武士。谢谢你在这里帮助我。