这个https://redis.io/topics/cluster-tutorial 指出redis集群不是强一致的。即使启用了wait,它也说明了以下原因:
更新未同步到的节点将成为主节点
在分区之后和节点超时之前,少数分区中的主节点不断接收更新。
如果对于密钥k,我们发现主节点m和副本r1、r2……rn使用
CLUSTER SLAVES node-id
. 执行
WAIT N
只在返回n时继续处理事务?这不总是确保在执行事务之前数据完全同步吗。这难道不能确保很强的一致性吗?
这个https://redis.io/topics/cluster-tutorial 指出redis集群不是强一致的。即使启用了wait,它也说明了以下原因:
更新未同步到的节点将成为主节点
在分区之后和节点超时之前,少数分区中的主节点不断接收更新。
如果对于密钥k,我们发现主节点m和副本r1、r2……rn使用
CLUSTER SLAVES node-id
. 执行
WAIT N
只在返回n时继续处理事务?这不总是确保在执行事务之前数据完全同步吗。这难道不能确保很强的一致性吗?
1条答案
按热度按时间eni9jsuy1#
不,还是不能保证。
尽管
WAIT
返回n,这意味着所有副本都已确认内存中的写入操作,在将这些写入操作写入磁盘之前,这些节点可能会失败。