Redis 如何在分布式计算中保持强一致性?

Redis 如何在分布式计算中保持强一致性?,redis,consistency,Redis,Consistency,例如,我有Master和Slave1S1和Slave2S2。如果我按如下方式执行同步复制 更新主机,并锁定写入 复制Slave1和Slave2 解锁母版的写入。 但以上的一致性不强 场景1,当S1和S2的复制都成功时, 阅读Slave1或Slave2的用户在特定时刻可以得到不同的值 场景2,复制S1成功,但复制到S2失败。 在这种情况下,主机应取消对S1的写入。但用户可能已经读过了 所以很难保持很强的一致性。因此,如果有必要,公司会使用什么算法来保持强一致性? 如何使最终写入值同时对客户端可见?

例如,我有Master和Slave1S1和Slave2S2。如果我按如下方式执行同步复制

更新主机,并锁定写入 复制Slave1和Slave2 解锁母版的写入。 但以上的一致性不强

场景1,当S1和S2的复制都成功时, 阅读Slave1或Slave2的用户在特定时刻可以得到不同的值

场景2,复制S1成功,但复制到S2失败。 在这种情况下,主机应取消对S1的写入。但用户可能已经读过了

所以很难保持很强的一致性。因此,如果有必要,公司会使用什么算法来保持强一致性? 如何使最终写入值同时对客户端可见?
谢谢。

用最简单的方式表达

有两种方法可以提供一致性

首先是在向数据库或数据库写入任何内容之前获取锁 缓存系统。这确保了读写锁定。这包括 主服务器也是如此

为了进一步增强锁定机制,需要分配钥匙 保持这种状态,以便读取总是重新指向 如果同时添加了新服务器,则为一致的服务器

在锁定时,也可以使用超时缓冲操作 因此,当应用新值时。这是返回的

其次,如果复制失败,那么就增加了复杂层 翻车次数。这确保了数据的一致性,如果不一致,则是一致的 不适用。
所以,为了保持强一致性,所有的读写操作都必须通过主服务器和您提到的一致性服务器,对吗?谢谢。我的错,我已经在服务器上添加了一个s。我的意思是,为了适应集群中添加的新服务器,它首先需要从集群的稳定部分进行验证。简言之,先拿锁,然后做事,然后释放锁。如果其他操作失败,请执行回滚。简单的交易非常感谢。我检查了MongoDB文档。如果用户总是从master读/写,则具有很强的一致性。如果用户将其配置为SlaveOK,则用户将以最终一致性从从机读取数据。再次感谢。没问题,很高兴我能帮忙: