redis事务的本质:
一组命令的集合!一个事务中的所有命令都会被序列化,在事务执行过程中,会按照顺序执行!
一次性,顺序性,排他性!
redis事务没有隔离级别的概念!也就是不存在Spring那种读已提交,读未提交的设置.
所有的命令在事务中,并没有直接被执行,只有发起执行命令的时候才会执行 Exce
redis单条命令是保证原子性的,但是事务不保证原子性
redis事务流程:
开启事务(multi)
命令入列(........)
执行事务(exec)
如:
放弃一个命令的话,在命令后一行 discard(只能放弃上一个)
命令错误所有的命令都不会执行
乐观锁:
悲观锁:认为什么时候都会出问题,无论做什么都锁上;
乐观锁:很乐观,认为什么时候都不会有问题,所以不会锁上,更新数据时判断一下版本号version,判定在此期间是否有人修改过这个数据.
redis可以使用watch充当乐观锁,
watch 一个对象,监视一个对象,事务正常结束,数据期间没有发生过变动,这个时候就执行成功