Redis Enterprise 中 WAIT 命令注意事项
上次更新时间:2024 年 4 月 18 日
目的
本文档旨在了解 OSS 和 Redis Enterprise (RE) 中 WAIT 行为之间的差异以及已知问题和边缘案例。
范围
使用 Redis 客户端库开发客户端并将其指向 Redis OSS 和 Enterprise 部署时,可以使用 WAIT 命令。
详细信息
在 OSS 和 RE 中,WAIT 命令以相同的方式工作。它在向客户端响应之前要等待多少个副本取决于应用程序将哪些参数传递给 WAIT 命令。在 RE 中,该数字始终为 1,因为RE 数据库仅支持单个 HA 分片;但是,请注意,它不能保证该写入已复制到 HA 分片。
如果 WAIT 响应 1,则表示 HA 分片确认它已提交写入。如果 WAIT 超时或响应 0,那么我们无法确定发生了什么,因此无法保证。应用程序需要决定是否忽略、重复操作或协调所发生的事情。
只有单一副本的 WAIT 对写入可用性具有严肃的影响,尤其是在故障转移、维护、副本完全同步所需时间等上下文中。在预期时间段内,WAIT 将超时并报告它甚至无法复制到 1 个副本。在 Redis Enterprise 中,WAIT 将响应为零的情况大大增加,而且包含“定期”维护活动。因此,在设计时应解决几个问题,以应对在维护活动存在的情况下 WAIT 的行为。
- WAIT 超时应持续多长时间?
- 当无法满足 WAIT 时,应用程序应该执行什么操作?
参考
可以在文章“使用 WAIT 命令以获得强一致性”中阅读 WAIT 特性的说明。