redis实现乐观锁

我们先介绍一下悲观锁和乐观锁:我们要知道我们java程序去做的时候是一定会去加锁的,比如说我们多条线程在并发执行的时候,一定会去加锁的

悲观锁:顾名思义,很悲观,就是认为什么时候都会出问题,无论干什么都加锁!所以说这种操作是非常影响性能的,比如说sychronized默认就是这样,无论干什么都会去加锁,用完之后再去解锁!

乐观锁:顾名思义,很乐观,认为什么时候都不会出现问题,所以不会加锁!那不上锁,总得有个机制去处理并发这个问题,那这个时候,就会在更新数据的时候去判断一下,在此期间,是否有人去改动过这个数据。

我们在开发中,一般都是使用乐观锁的,很少使用悲观锁的,因为无论干什么都要去上锁,这个效率极其低下,乐观锁相对来说性能就会好很多,

那么在redis中实现乐观锁是用一个watch,就是去加一个监视器:

首先我们设置一个100块钱,然后设置一个出去的钱,比如说0元,这个时候我们加一个watch,监视我们的money,然后我们正常执行事务,我们在入队命令里去花掉20块钱,那么我们的out里是不是要加20块钱,我们执行这个事务,正常执行事务的话,余额就是80块,支出就是20块,说明现在这个乐观锁确实没有任何问题,那么它就可以执行成功,

你可能感兴趣的:(redis,java,缓存)