问候溢出者,
在Redis哨兵/群集设置中,我们是否可以使用WAIT命令和从属总数来确保Redis服务器之间的一致性?为什么不呢?
亲切的问候
答案 0 :(得分:13)
WAIT
为Redis实现同步复制。同步复制是必需的,但不足以以实现强一致性。强一致性实际上是两件事的总和:
WAIT不提供“2”。 Redis中的复制过程由Sentinel或Redis Cluster执行,并且无法提供属性2
(因为Redis中的同步复制不是规则的异常,因此没有太多关注该方面)。但是,Redis复制的作用是尝试提升出现的从属设备以保留最大量的数据。虽然这不会改变Redis故障转移的理论保证,但仍然会丢失已确认的写入,这意味着如果使用WAIT
,则有更多的从属服务器在其内存中具有给定的操作,反过来它也是很多更有可能的是,在发生故障转移时,将保留该操作。但是,虽然这将使失败模式丢弃难以触发的已确认操作,但始终存在具有此属性的故障模式。
TLDR: WAIT
不会使Redis可线性化,它的作用是确保指定数量的从服务器将接收写入,从而使故障转移更加强大,但是没有任何艰难的保证。