Redis实现乐观锁

悲观锁:当要对数据库中的一条数据进行修改的时候,为了避免同时被其他人修改,最好的办法就是直接对该数据进行加锁以防止并发。这种借助数据库锁机制,在修改数据之前先锁定,再修改的方式被称之为悲观并发控制。

悲观锁具有强烈的独占和排他特性。

乐观锁:乐观锁是相对悲观锁而言的,乐观锁假设数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则返回给用户错误的信息,让用户决定如何去做。乐观锁适用于读操作多的场景,这样可以提高程序的吞吐量。

正常执行时:

127.0.0.1:6379> set money 1000
OK
127.0.0.1:6379> set pay 0
OK
127.0.0.1:6379> watch money
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> decrby money 200
QUEUED
127.0.0.1:6379> incrby pay 200
QUEUED
127.0.0.1:6379> exec
1) (integer) 800
2) (integer) 200

 开启两个窗口测试实现乐观锁

 

 

 

 

原文地址:https://www.cnblogs.com/huige185/p/14207986.html