Redis和乐观并发控制:有可能吗?

时间:2011-11-14 12:11:36

标签: redis

在将redis中的实体存储为序列化二进制blob的应用程序中工作。我有多个客户端在同一个数据集上工作,我希望使用乐观并发。

我的要求是这些:

  1. 在一次往返中读取序列化实体以获取特定密钥
  2. 将修改后的实体写回redis。如果任何其他客户端在读取和写入之间修改了实体,则操作将失败
  3. 这可以用redis做吗?如果是这样的话:应该执行哪些redis命令来执行此操作?

2 个答案:

答案 0 :(得分:5)

WATCH keyGET keyMULTISET key,然后EXEC。如果自执行EXEC后密钥的值发生更改,则WATCH将失败。

http://redis.io/topics/transactions#cas

答案 1 :(得分:0)

对于使用StackExchange.Redis库的任何人,请记住它多路复用单个连接,并且上述检查和设置模式可能无法按预期共享该连接的2个请求。请参阅文档中的这篇文章:link