redis事务乐观锁
先了解下事务的相关命令(redis-cli支持tab自动补全):
0、准备知识
- MULTI:事务开启
- EXEC:事务提交
- WATCH:监控变量,如果变量改变,则不执行事务操作
- DISCARD: 放弃事务中的命令,与EXEC排他
ps:MULTI和EXEC两者之间的操作将为原子性操作
启动两个客户端,redis-cli
一、客户端1
二、客户端2
ps:这边exec是事务1先执行的,但是其他语句都是接近同时执行的(虽然说法不太严谨,但是可以认为是同一时间执行的)
从结果上看:t1执行成功,t2执行失败,乐观锁生效
如果仅仅使用事务,则会产生数据覆盖的情况。