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的乐观锁操作
在事务执行到一半,修改它的值

如果修改失败,获取最新的值就好