Redis事物

Redis事物提供单个操作的隔离,通过multi开始,exec执行或discard取消事务。事务不具备隔离级别和原子性,遇到错误仍会继续执行。watch命令用于实现乐观锁,当数据被修改则事务失败。EXEC后或客户端丢失连接,watch监控失效。
摘要由CSDN通过智能技术生成

概念

  • redis事物是什么?
    redis事物是一个单独隔离的操作,它将一系列指令按需排队并执行,期间不会被其他客户端的指令插队。

  • redis事务三大指令multi、exec、discard是什么?

    1. multi: 开启事物
    2. exec: 执行事物
    3. discard: 取消事物
      通过multi,当前客户端就会开启事务,后续的指令都会安迅存到队列中。当用户键入exec后,这些指令都会按顺序执行。
      若开启multi后输入若干指令,在键入discard,则之前的指令通通取消执行
  • 三大特性

    1. 单独隔离:不能插入其他指令
    2. 没有隔离级别概念:事物提交前,指令都不会执行
    3. 无原子性: 指令异常,将不会影响上一条或下一条指令的执行。

事务的错误和回滚的情况

1.组队时错误

组队时输入错误的指令,redis会之间将所有指令都会失效,因为这是一个问题队列。
如下
在这里插入图片描述

2.执行命令时错误

执行时错误比较特殊,他在按序处理所有指令,遇到错误就按正常流程处理继续执行下去。
在这里插入图片描述

watch 命令

Redis 提供redis 来提供乐观锁,类似于CAS(check-and-set)
watch 命令是一种乐观锁实现,redis 在修改数据的时候会检测数据是否被修改,如果修改了,则执行失败。

在这里插入图片描述

监控失效时机

  1. 一旦执行EXEC后, 之前加watch xxx监控(乐观锁)将被取消。
  2. 一旦客户端丢失连接,所有的watch xxx 将被取消
  3. 执行 UNWATCH

事物总结

  1. 以multi开启一个事物
  2. 将多个命令入队到事物中
  3. 由EXEC命令执行事物
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值