Redis事务、锁(十)
1.事务
Redis事务本质:一组命令的集合!一个事务中所有命令都会被序列化,在事务执行过程中,会按照顺序执行!
—— 队列 set set set 执行 ——–
Redis事务没有隔离级别的概念
所有的命令在事务中,并没有直接被执行!只有发起执行命令的时候才会执行!Exec
Redis单条命令式保存原子性,但是事务不保证原子性!
redis的事务:
- 开启事务( multi )
- 命令入队()
- 执行事务( exec )
1.multi开启事务
2. discard 清空未执行的事务,队列中的事务都未执行
3.编译型异常(代码有问题!命令有错),事务中所有的命令都不会被执行
4.运行时异常(1/0),如果事务队列中存在语法性,那么执行命令的时候,其他命令是可以正常执行的,错误命令抛出异常
2.悲观锁
悲观锁
- 很悲观,什么时候都会出问题,无论做什么都会加锁
乐观锁
- 很乐观,认为什么时候都不会出问题,所以不会上锁!更新数据的时候去判断一下,在次期间是否有人修改过这个数据。
- 获取version
- 更新的时候比较version
1.redis 测监控测试
正常执行
修改失败,测试多线程修改值,使用watch可以当作redis的乐观锁操作
在事务执行到一半,修改它的值
如果修改失败,获取最新的值就好
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 时间海!
评论