跳转至

Redis 事务

redis 的事务操作

redis 的单条命令保证原子性,但是 redis 的事务不保证原子性

redis 的事务没有隔离级别。redis 事务实际上就是一组命令的集合,这些命令在事务中会被序列化,然后按照命令的先后顺序一次性全部执行,在执行的过程中不能被打断。 即:redis 的事务在执行时是一次性,顺序性和排他性的

开启事务:multi

命令入队 :

执行事务 :exec

file

放弃事务:discard

file

事务异常

在开启事务后,如果编写的命令有语法错误,则会立即报错,且整个事务队列中的所有命令都不会执行 .

file

如果在开启事务后,命令中没有语法错误,但是却有运行错误,即命令能够成功入队,但是不能够执行,则在事务提交后只有该命令抛错,其他命令可以正常执行。

file

redis 的乐观锁

  • 乐观锁:就是它会认为所有的事务都不会失败,因此它不会给事务上锁。它只会在更新的时候判断在此期间是否有人修改过数据
  • 悲观锁:它认为所有的事务都会执行失败,因此做任何事情它都会加锁,这样是及其影响效率的。

redis 的乐观锁实现命令:watch

单线程下运行

file

多线程修改值

file

file

file

如果事务执行失败,需要先解锁,再加锁,解锁命令为:unwatch


最后更新: 2023年9月17日 19:14:43
创建日期: 2023年9月17日 19:14:43
回到页面顶部