gpt4 book ai didi

multithreading - Redis有没有decr if特性

转载 作者:IT王子 更新时间:2023-10-29 06:14:55 26 4
gpt4 key购买 nike

在我的业务应用中,我计划将用户余额存储在Redis缓存服务器中,允许多个进程消费余额。但是当金额下降到 0 时,我希望进程“失败”消耗余额。

截至目前,我无法实现这一点。例如,假设余额为 1 INR 或 $,并且 2 个线程中的每一个都想要使用它。每个线程确实获取和减少。所以有时会发生值低于 0 的情况,因为没有类似于“比较和设置”的“DECR IF”之类的原子操作。

是否有可能以任何其他方式实现这一目标?

最佳答案

虽然 Redis 中没有一个命令可以做到这一点,但您可以使用它的 transactionsWATCH用于此目的的命令。 Optimistic locking using check-and-set 小节中的以下伪内容基本上是您问题的答案:

WATCH mykey
val = GET mykey
val = val + 1
MULTI
SET mykey $val
EXEC

关于multithreading - Redis有没有decr if特性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26774529/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com