【问题标题】:Redis and Optimistic concurrency control: is it possible?Redis 和 Optimistic 并发控制:有可能吗?
【发布时间】:2020-01-15 23:25:01
【问题描述】:

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

我的要求是:

  1. 在一次往返中读取特定键的序列化实体
  2. 将修改后的实体写回redis。如果任何其他客户端在读取和写入之间修改了实体,则操作将失败

这可以在redis中做到吗?如果是这样:应该执行哪些 redis 命令来执行此操作?

【问题讨论】:

  • 我认为 WATCH-MULTI-EXEC(交易命令)很有帮助

标签: redis


【解决方案1】:

WATCH keyGET keyMULTISET key,然后是EXEC。如果在您执行 WATCH 后密钥的值发生了变化,EXEC 将失败。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-08-21
      • 2020-10-27
      • 2019-01-23
      • 2013-01-28
      • 2012-10-04
      • 1970-01-01
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多