为什么即使 Redis 很快,也不建议用原生 INCR 之类命令做跨机房准确计数?
Even though Redis is fast, why is using native INCR-like commands risky for accurate multi-DC counters?
题目类型: 技术面试题
这是一道技术面试题,常见于澳洲IT公司面试中。
难度: hard
分类: System Design
标签: INCR, active-active, idempotency
参考答案摘要
答案 Redis 原生命令在单实例/单主节点上原子性很好,但跨机房复制会遇到网络抖动、重试与不确定成功(客户端不知道上次 INCR 是否执行成功)。由于 INCR 更新天然 不幂等 ,一次请求被重复执行就会导致计数偏大。为了在多活场景保持准确,需要更新操作具备去重与可合并的语义;原生计数器很难做到这一点,除非额外引入 Lua/Set 存 userId、记录操作 ID 来实现应用层幂等。
本题提供 STAR 原则详细解答和技术解析,登录匠人学院学习中心即可查看完整答案。