【发布时间】:2014-01-10 14:14:04
【问题描述】:
基于redis文档:http://redis.io/commands/incr
段落模式:速率限制器 2 更短的版本代码:
值 = INCR(ip) 如果值 == 1 那么 过期(IP,1)据称存在使 EXPIRE 永远不会执行的竞争条件。这意味着 ip 的值可以以某种方式从 0 反弹到 2。
但是在我看来,由于 Redis 是单线程,而 INCR 是原始命令,它本身不应该是原子的吗?即使 2 个客户端几乎同时执行 INCR,他们怎么可能都检索 0 或都检索 2?
【问题讨论】:
标签: redis increment race-condition