我的理解是: Redis 既然是单线程,命令会从FIFO队列里面取出来一个接一个执行,不会存在资源竞争,为什么还需要 watch 命令呢?
期待的结果
- 给出自己的详尽理解;
- 给出一些参考资料.
我的理解是: Redis 既然是单线程,命令会从FIFO队列里面取出来一个接一个执行,不会存在资源竞争,为什么还需要 watch 命令呢?
Watch 是对某些key 做监听。在执行事务的时候,如果watch到key 和value 被修改,则事务不执行。
假设有两个客户端,A,B都需要执行某一事务(但事务仅希望执行一次),那就可以使用watch 来先监控相同的key。
如果A先于B操作完成,则B事务将不会再执行了。
事务是串行的,对于A,B两个客户端,操作一个key,A先于B更新了该key,则B再执行的时候会导致B的事务终结。
送个文档:https://www.jianshu.com/p/ad2...
5 回答3.2k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
2 回答3.1k 阅读
1 回答2.4k 阅读✓ 已解决
1 回答2.9k 阅读✓ 已解决
1 回答2k 阅读✓ 已解决
https://redis.io/docs/manual/transactions/ 这里有更清晰解释
如果redis server 只连接一个客户端那么是否就不要使用watch等之类的命令了?
上面通过休眠100毫秒的方式来放大潜在的问题;这里我们使用一个客户端但也有可能出现问题
https://juejin.cn/post/6989109527886954527