Redis事务和监视命令

时间:2017-05-29 10:04:01

标签: redis transactions

因为我想在redis中使用事务。我已经阅读了redis交易的文档,可以在下面找到。

观看mykey val = GET mykey val = val + 1 多 设置mykey $ val EXEC

但我的问题是,如果redis事务是按顺序执行的,那么原子然后我们可以通过以下语句实现相同的行为吗?

MULTI val = GET mykey val = val + 1 设置mykey $ val EXEC

谢谢,

1 个答案:

答案 0 :(得分:0)

,你无法做到这一点。

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

在您的情况下,val = val + 1必须在客户端上运行,并且它不能是MULTI命令的一部分。此外,在EXEC返回之前,您无法获得val = GET mykey的回复。所以你不能在val之前增加SET mykey val

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