是什么: 能够一次执行多个命令,本质是一组命令的集合。一个事务中的全部命令都会序列化,按顺序串行化的执行而不会被其余命令插入redis
能干吗:一个队列中,一次性、顺序性、排他性的执行一系列命令 (要和pipeline区分开)数据库
Redis实际上是部分支持事务: 由于事务的错误模式并不统一3d
悲观锁:顾名思义很悲观,每次去拿数据的时候都认为别人修改,因此每次在拿数据的时候都会上锁,这样若是中间有人想拿数据就会一直阻塞除非锁被释放获取到锁。传统的关系型数据库里,用到了不少种这种锁机制,好比行锁,表锁,写锁等blog
乐观锁:顾名思义很乐观,每次去拿数据的时候都认为别人不会修改,因此不会上锁,可是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可使用版本号等机制。乐观锁适用于多读的应用类型,这样能够提升吞吐量队列
示例:事务
2.用watch监控,进行数据监控:
ip
3.监控过程当中,他人纂改:
pip
一旦EXEC命令执行,以前加的监控锁就会取消监控
Watch指令,相似乐观锁,事务提交时,若是Key的值已被别的客户端改变,序列化
好比某个list已被别的客户端push/pop过了,整个事务队列都不会被执行