Redis 并发竞争 key 就是多个客户端操作一个 key,可能会导致数据出现问题,主要有以下几种解决方法:

  • 乐观锁,watch 命令可以方便的实现乐观锁。watch 命令会监视给的的每一个 key,当 exec 时如果监视的任一个 key 自从调用 watch 后发生过变化,则整个事务会回滚,不执行任何动作。不能在分片集群中使用。
  • 分布式锁,适合分布式场景
  • 时间戳,适合有序场景,比如 A 想把 key 设置为 1,B 想把 key 设置为 2,C 想把 key 设置为 3,对每个操作加上时间戳,写入前先比较自己的时间戳是不是早于现有记录的时间戳,如果早于,就不写入了。
  • 消息队列,串行化处理。

评论




博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议

载入天数...载入时分秒... 本站使用 Volantis 作为主题 鲁ICP备-20012065号