检查并增加Redis中的计数器

格曼

我有一次需要完成N次的手术。该操作由接收请求的许多可能的并行过程完成。一个过程必须检查计数器是否超过了N,如果没有,则增加计数器并执行操作。我想我可以使用Redis计数器。

但是,如果我只是GET再加上INCR一个值,我可能会遇到争用条件,这将导致该操作执行N次以上。如何test-and-incr对Redis执行某种操作?

我知道我可以使用,WATCH但这是一个乐观的锁。我希望每秒会有很多碰撞。这将导致很多失败。也许我只是包装简单GET,并INCR具有某种外部互斥的。但是我不确定性能是否足够好。

DhruvPathak
  • 您可以INCR在这里安全地使用Redis
  • INCR返回增量后的值。

  • 您首先检查INCR返回的值(请参见无需执行GET),然后根据该值进行操作。

  • 唯一的事情是,您必须将INCR返回值阈值设置为N + 1,才能限制N次操作,即比N多执行一次Redis操作。例如,如果我们希望将操作限制为仅发生3次,则INCR返回4增量后,您将停止进行进一步的操作,因为它已经发生了3次。

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章