Redis Sentinel和ShardedJedis为ShardedJedisPipeline

时间:2015-07-14 12:18:42

标签: java redis jedis redis-sentinel

我最初在制作时在群集模式下使用Redis。但后来我意识到如果我使用Redis independent servers使用ShardedJedis java API,我可以使用ShardedJedisPipeline,因为显而易见的原因,它具有更好的性能。 但是,在使用Redis Server维护自动故障转移和高可用性时,我必须使用Redis Sentinel。所以,我开始研究Sentinel。但在执行初始POC时,我知道我不能同时使用ShardedJedisSentinel

现在似乎我的所有路径都已关闭

  1. Redis Cluster不支持Pipeline
  2. 如果没有Sentinel
  3. ,我无法实现高可用性和自动故障转移
  4. 我无法将SentinelShardedJedis一起使用。
  5. 如果我在任何地方出错,请纠正我,请告诉我实现性能以及高可用性和自动故障转移的最佳策略。

2 个答案:

答案 0 :(得分:1)

一般而言:

  • Redis Cluster支持Pipelining,就像Redis Standalone一样。这里的重要部分是在使用键发出命令时点击正确的节点。没有密钥的命令(例如MULTIEXEC)对于Redis群集来说是不可取的
  • HA-Part不是100%正确。虽然确实如此,但Redis集群没有像Redis Sentinel这样的HA-Registry,集群本身也维护着一种拓扑结构。如果使用主服务器和从服务器,那么对新主服务器进行客户端故障转移并不是什么大问题。这里唯一的技巧是找到合适的时机并相应地更新集群视图。

AFAIK,Redisson具有自动拓扑更新机制。我不确定,Jedis是否会定期更新群集视图,但可以手动执行此操作。 lettuce具有自动重新连接功能,自动群集视图更新为scheduled for the 3.3 release

HTH。

答案 1 :(得分:0)

您应该考虑Redis群集行为(Redis群集可以响应任何操作时的触发器重定向)。

Redis Cluster的每个进程都像普通的Redis进程一样,因此它支持Pipelining。 但是,它并不能保证我们使用多个节点进行流水线操作是安全的。

这是一个长时间的讨论,所以我附上了我发布到Redis Google网上论坛的关于Redis Cluster with Pipeline的链接。 请参阅此处了解更多详情。

Redis Cluster with Pipeline