0

我最初Redis在生产中使用集群模式。但后来我意识到,如果我使用Redis independent serversusing ,由于显而易见的原因ShardedJedis java API,我可以使用性能更好的。ShardedJedisPipeline但是在使用Redis Server来维护自动故障转移和高可用性时,我必须使用Redis Sentinel. 所以,我开始研究Sentinel. 但是在做初始POC时,我知道我不能同时使用ShardedJedisSentinel

现在看来我所有的路径都关闭了

  1. Redis Cluster不支持流水线
  2. 如果没有,我无法实现高可用性和自动故障转移Sentinel
  3. 我不能使用Sentinelwith ShardedJedis

如果我在任何地方错了,请纠正我,并建议我实现性能以及高可用性和自动故障转移的最佳策略。

4

2 回答 2

1

笼统地说:

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

AFAIK,Redisson有一个自动拓扑更新机制。我不确定 Jedis 是否会定期更新其集群视图,但可以手动执行此操作。lettuce具有自动重新连接功能,自动集群视图更新计划在 3.3 版本中进行

HTH。

于 2015-07-15T06:03:07.950 回答
0

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

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

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

带管道的 Redis 集群

于 2015-07-19T06:53:13.477 回答