事务

  • redis事务是不保证原子性的,redis事务只是一组命令的集合。单条命令是原子性的
    • 命令为队列顺序
    • redis事务没有隔离级别概念
  • 事务实现
    • 开启事务,命令入队,执行事务
    • 命令入队出现编译异常,所有命令都不会执行。出现运行时异常,其他命令还可以执行 ```powershell multi 开启事务 … 依次执行任意命令,执行后会返回queued表示已入队,但是未执行 exec 依次执行所有命令,然后结束这一个事务,再次使用事务需要重新开启

discard 取消事务,入队的命令都不会执行

```

监视(乐观锁 )

  • 给一个键添加监视,如果事务期间被其他线程/连接修改了该键,那么事务执行不会成功,即任何一个命令都不会执行
    • 其实是在事务前记录键值,事务执行时再比对有无变化
    • unwatch取消监视,如果事务执行失败一定要先解锁再新监视(记录最新值)
  • image.png