04.Redis— —事务

本文介绍Redis有关事务的知识。

一、概述

Redis事务可以一次执行多个操作,其步骤如下:

  • 开启事务
  • 命令入队
  • 执行事务/放弃事务

涉及到的命令如下:

  • multi:开启事务,总返回OK
  • exec:执行事务
  • discard:清空事务队列, 并放弃执行事务

演示如下:

在这里插入图片描述

二、事务中的错误

如果命令在入队时报错,则事务中的命令不会执行:

在这里插入图片描述

如果事务中有命令执行出错,并不会回滚,其他的命令依旧会成功执行:

在这里插入图片描述

三、监测键

WATCH 命令可以为 Redis 事务提供 check-and-set (CAS)行为。

被 WATCH 的键会被监视,并会检查这些键是否被改动过了。 如果有至少一个被监视的键在 EXEC 执行之前被修改了, 那么整个事务都会被取消, EXEC 返回nil-reply来表示事务已经失败。

事务只能在所有被监视键都没有被修改的前提下执行, 如果这个前提不能满足的话,事务就不会被执行。WATCH 命令可以被调用多次。 对键的监视从 WATCH 执行之后开始生效, 直到调用 EXEC 为止。

  • 当 EXEC 被调用时, 不管事务是否成功执行, 对所有键的监视都会被取消。

  • 当客户端断开连接时, 该客户端对键的监视也会被取消。

  • 使用无参数的 UNWATCH 命令可以手动取消对所有键的监视。 对于一些需要改动多个键的事务, 有时候程序需要同时对多个键进行加锁, 然后检查这些键的当前值是否符合程序的要求。 当值达不到要求时, 就可以使用 UNWATCH 命令来取消目前对键的监视, 中途放弃这个事务, 并等待事务的下次尝试。

WATCH需要在事务开启前使用,即MULTI前,案例:

客户端A监视键name和age,并开启事务,命令入队,但没有执行:

在这里插入图片描述

客户端B修改了name的值:

在这里插入图片描述

客户端A执行事务,但并没有执行成功:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值