gpt4 book ai didi

Redis事务和watch命令

转载 作者:可可西里 更新时间:2023-11-01 11:27:45 40 4
gpt4 key购买 nike

因为我想在redis中使用事务。我已阅读 redis 事务的文档并在下面找到。

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

但我的问题是,如果 Redis 事务是按顺序和原子执行的,那么我们不能使用以下语句实现上述相同的行为吗?

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

谢谢,

最佳答案

,您无法实现。

使用MULTIEXEC,您可以在服务器端 原子地运行多个命令,并在之后获取这些命令的所有回复>EXEC 返回。

在您的情况下,val = val + 1 必须在客户端 上运行,并且它不能是MULTI 命令。此外,在 EXEC 返回之前,您无法获得 val = GET mykey 的回复。所以你不能在 SET mykey val 之前增加 val。相反,您必须在 MULTI 之外运行 GET 命令,并使用 WATCH 命令来确保 key 在更新之前没有更改。

实现您的目标的另一种解决方案,即使 val = val + 1服务器端 上运行:您可以使用 Lua scripting . Lua 脚本是 MULTIEXEC 命令的替代品,它在服务器端以原子方式运行。事实上,它是 a better solution to achieve transaction .

关于Redis事务和watch命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44239750/

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