【问题标题】:Redis Replication and Cluster differenceRedis 复制和集群的区别
【发布时间】:2017-06-20 17:42:35
【问题描述】:

目前我的 Spring boot 应用有一个 redis 服务器。

现在我想让redis服务器高可用,我应该遵循哪种方法?

例如,我会设置 master、slave 和 sentinel,如果我的 master 自动关闭,新的 master 会被选举并且应用程序正常工作。 这种方法是否称为自动故障转移复制?

另一方面,集群与上述(复制)设置有何不同。是否还支持哨兵服务器进行自动故障转移?

就数据而言,我读到,集群在多个节点之间拆分数据,而不是 replication 在所有从属节点中拥有主节点数据的精确副本。那么在集群的多个节点中拆分数据,如果某些节点宕机,会导致数据陈旧的情况

【问题讨论】:

    标签: java node.js spring caching redis


    【解决方案1】:

    如果您的机器上的数据多于 RAM,请使用 redis 集群跨机器分片数据。 Redis 集群本身支持主从复制和故障转移,不需要哨兵。如果某个节点出现故障,它将继续工作,直到大多数主节点出现故障。

    如果您的机器上的数据少于 RAM,请设置一个主/从复制并在前面设置哨兵来处理故障转移。

    https://redis.io/topics/cluster-tutorial

    【讨论】:

    • 但是在redis集群中,一些主节点不能有一些数据,对吧?在这种情况下,如果一个请求来获取数据,它是否会搜索所有 master 中的数据?如果不是,是否会导致数据过时?
    • 当客户端连接到集群节点并请求数据时,如果节点有数据,节点将响应数据,或者告诉客户端另一个节点包含数据。除非出现问题,否则不应有陈旧的数据,请参阅redis.io/topics/…
    • 事实上,客户端必须知道它命中的Cluster节点。所有 Java 客户端都会这样做,因此客户端会选择与之对话的节点来读取或写入特定的密钥。
    • @ChrisTanner 在 redis 复制中,我们如何将读取配置为仅在从站中发生?这是在主服务器中发生写入而在从服务器中发生读取的默认行为吗?
    • @Harshana 您的应用程序代码需要请求主服务器或从服务器。
    猜你喜欢
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    • 1970-01-01
    • 2012-07-05
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多