事务本质:

一组命令的集合,一个事务所有命令都会被序列化,在事务执行过程中,都会按顺序执行。

一次性、顺序、排他性。

(1)redis 单条命令保存原子性,但是事务不保证原子性。

(2)没有隔离级别的概念。

(3)所有的命令在事务中,并没有直接被执行,只有发起执行命令的时候才会执行。Exec

redis事务

开启事务:

· 开启事务(multi)
· 命令入队(数组操作部分)
· 执行事务(exec)

Redis 事务、乐观锁_乐观锁

 提示:执行完事务,事务就没了,如果还需要事务,必须重新开启。

放弃事务:

discard 

之前添加到列队中的命令都不会生效!

Redis 事务、乐观锁_乐观锁_02

悲观锁

很悲观,认为什么时候都会出现问题,无论什么时候都会加锁。

乐观锁

· 很乐观,认为什么时候都不会出现问题,所以不会上锁。更新数据的时候会判断下,在此期间是否有人更改过这条数据。

· 每次更新的时候,都会获取version。

· 然后比较version。

开启乐观锁 - watch key,如果发现事务执行失败,需要先解锁 - unwatch key,然后在去watch  key监视