问候溢出者,
在 Redis sentinel/cluster setup 中,我们是否可以使用 WAIT 命令和从站总数来确保 Redis 服务器之间的强一致性?为什么不?
亲切的问候
问候溢出者,
在 Redis sentinel/cluster setup 中,我们是否可以使用 WAIT 命令和从站总数来确保 Redis 服务器之间的强一致性?为什么不?
亲切的问候
WAIT
为 Redis 实现同步复制。同步复制是必需的,但不足以实现强一致性。强一致性实际上是两件事的总和:
WAIT 不提供“2”。Redis 中的复制过程由 Sentinel 或 Redis Cluster 执行,无法提供属性2
(由于 Redis 中的同步复制是例外而不是规则,因此没有过多关注这方面)。然而,Redis 复制所做的是尝试提升似乎保留最大数据量的从属服务器。虽然这不会改变 Redis 故障转移的理论保证,但仍然会丢失已确认的写入,这意味着如果您使用WAIT
,有更多的从服务器在它们的内存中执行给定的操作,反过来,在发生故障转移时,该操作更有可能被保留。然而,虽然这将使丢弃已确认操作的故障模式难以触发,但始终存在具有此属性的故障模式。
TLDR: WAIT
不会使 Redis 线性化,它所做的是确保指定数量的从属服务器将接收写入,这反过来使故障转移更加健壮,但没有任何硬性保证。