事务
Redis事务本质:一组命令的集合! 一个食物中的所有命令都会被序列化,在十五执行过程中,会按照顺序执行!
一次性,顺序性,排他性
Redis事务没有隔离级别的概念
所有的命令在事务中,没有直接被执行,只有发起执行命令的时候才会执行! Exec
Redis单条命令式保存原子性的,但是事务部保证原子性
Redis事务:
- 1.开启事务(multi)
- 2.命令入队()
- 3.实行事务(exec)
- 正常执行事务
127.0.0.1:6379> multi # 开启事务 OK 127.0.0.1:6379> set k1 v1 QUEUED 127.0.0.1:6379> set k2 v2 QUEUED 127.0.0.1:6379> get k2 QUEUED 127.0.0.1:6379> set k3 v3 QUEUED 127.0.0.1:6379> exec # 执行事务 1) OK 2) OK 3) "v2" 4) OK DISCARD # 取消事务
- 1.编译型异常,事务中所有的命令都不会被执行!
- 2.运行时异常,如果事务队列中存在余发星,那莫执行命令的时候,其他的命令可以正常执行,错误命令抛出异常
悲观锁
任何操作都进行加锁
乐观锁
更新数据的时候进行判断,在次期间有无修改这个数据
获取version
更新的时候比较version
使用watch监视指定变量