Redis 事物

Redis 事物
  • 将多条命令加入队列,一次批量执行多条命令,每条命令会按顺序执行,事务执行过程中不会受客户端传入的命令请求影响

与 MySQL 事物区别
  • 没有隔离级别
    • 批量操作在发送 exec 命令前被放入队列缓存,并不会被实际执行,也就不存在事务内的查询要看到事务里的更新,事务外查询不能看到
  • 不能保证原子性
    • redis 中,单条命令是原子性执行的,但事务不保证原子性,且没有回滚,事务中任意命令执行失败,其余的命令仍会被执行

事物三个阶段
  • 一个事务从开始到执行会经历以下三个阶段
    • 第一阶段:开始事务
    • 第二阶段:命令入队
    • 第三阶段:执行事务

redis 事务的相关命令
  • multi:标识一个事务的开启,即开启事务
  • exec:执行事务中的所有命令,即提交
  • discard:放弃事务,和回滚不一样,redis 事务不支持回滚
  • watch:监视 key 改变,用于实现乐观锁,如果监视的 key 的值改变,事务最终会执行失败(事物没开始或者事物已经结束,可以修改,事物执行时,单线程自然无法修改值)
  • unwatch:放弃监视

  • watch 取消监视:
    • 事务执行之后,不管是否执行成功还好是失败,都会取消对应的监视
    • 当监视的客户端断开连接时,也会取消监视
    • 可以手动 unwatch 取消所有 key 的监视

参考文档
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tytler

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值