事务
可以一次执行多个命令,即一组命令的集合。
Redis的单条命令是保证原子性的,但是redis事务不能保证原子性
Redis事务执行有三个阶段
- 开启事务(multi)
- 入队
- 执行事务(exec)
Redis事务的常用命令
放弃事务:DISCARD
事务中的命令不会执行
监控(watch)
悲观锁就类似与表锁,它保证了数据一致性但牺牲了效率。而乐观锁虽与行锁有相似之处,但是它在行锁的基础之上做了提升。
悲观锁:
- 很悲观,认为什么时候都会出现问题,无论做什么都会加锁
乐观锁:
- 很乐观,认为什么时候都不会出现问题,所以不会上锁!更新数据的时候去判断一下,在此期间是否有人修改过这个数据(1.获取,2.更新version)
正常执行
没有其他事务进行操作
执行exec之前,时另外一个线程修改了值,导致事务执行失败。
如果失败:先解锁,再加锁,修改后再执行
注意:只要执行了EXEC,之前加的监控锁都会被取消!Redis的事务不保证原子性,一条命令执行失败了,其他的仍然会执行,且不会回滚