因为我想在redis中使用事务。我已经阅读了redis交易的文档,可以在下面找到。
观看mykey val = GET mykey val = val + 1 多 设置mykey $ val EXEC
但我的问题是,如果redis事务是按顺序执行的,那么原子然后我们可以通过以下语句实现相同的行为吗?
MULTI val = GET mykey val = val + 1 设置mykey $ val EXEC
谢谢,
答案 0 :(得分:0)
否,你无法做到这一点。
使用MULTI
和EXEC
,您可以在服务器端以原子方式运行多个命令,并在EXEC
返回后获取这些命令的所有回复。< / p>
在您的情况下,val = val + 1
必须在客户端上运行,并且它不能是MULTI
命令的一部分。此外,在EXEC
返回之前,您无法获得val = GET mykey
的回复。所以你不能在val
之前增加SET mykey val
。
为了实现您的目标,即在服务器端上运行val = val + 1
,您可以使用Lua scripting。 Lua脚本是MULTI
和EXEC
命令的替代,它在服务器端以原子方式运行。事实上,它是a better solution to achieve transaction。