Redis 第5章 事务

63 篇文章 5 订阅
63 篇文章 0 订阅

5事务

1. 事务简介

  1. Redis中事务,不同于传统的关系型数据库中的事务。
  2. Redis中的事务指的是一个单独的隔离操作。
  3. Redis的事务中的所有命令都会序列化、按顺序地执行且不会被其他客户端发送来的命令请求所打断。
  4. Redis事务的主要作用是串联多个命令防止别的命令插队

2. 事务常用命令

MULTI

标记一个事务块的开始

EXEC

执行事务中所有在排队等待的指令并将链接状态恢复到正常 当使用WATCH 时,只有当被监视的键没有被修改,且允许检查设定机制时,EXEC会被执行

DISCARD

刷新一个事务中所有在排队等待的指令,并且将连接状态恢复到正常。

如果已使用WATCH,DISCARD将释放所有被WATCH的key。

WATCH

标记所有指定的key 被监视起来,在事务中有条件的执行(乐观锁)

 

3. 事务的常见演示

3.1 简单组队

MULTI开启组队,EXEC依次执行队列中的命令。

 

DISCARD中途取消组队

3.2 组队失败

3.2.1 自作自受

此种情况,语法符合规范,Redis只有在执行中,才可以发现错误。而在Redis中,并没有回滚机制,因此错误的命令,无法执行,正确的命令会全部执行!

3.2.2 殃及池鱼

在编译的过程中,Redis检测出来了错误的语法命令,因此它认为这条组队,一定会发生错误,因此全体取消;

3.3.3 官方说明

4. 锁

4.1 悲观锁

 

执行操作前假设当前的操作肯定(或有很大几率)会被打断(悲观)。基于这个假设,我们在做操作前就会把相关资源锁定,不允许自己执行期间有其他操作干扰。

Redis不支持悲观锁。Redis作为缓存服务器使用时,以读操作为主,很少写操作,相应的操作被打断的几率较少。不采用悲观锁是为了防止降低性能。

4.2 乐观锁

执行操作前假设当前操作不会被打断(乐观)。基于这个假设,我们在做操作前不会锁定资源,万一发生了其他操作的干扰,那么本次操作将被放弃。

5. Redis中的锁策略

    1. Redis采用了乐观锁策略(通过watch操作)。乐观锁支持读操作,适用于多读少写的情况!
    2. 在事务中,可以通过watch命令来加锁;使用 UNWATCH可以取消加锁;
    3. 如果在事务之前,执行了WATCH(加锁),那么执行EXEC 命令或 DISCARD 命令后,锁对自动释放,即不需要再执行 UNWATCH 了

 

本教程由尚硅谷教育大数据研究院出品,如需转载请注明来源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Gin和Redis进行事务操作时,你可以通过以下步骤来实现: 1. 创建Redis连接:首先,你需要使用Go语言的Redis客户端库连接到Redis数据库。可以使用第三方库如`go-redis`或`redigo`来实现。创建一个Redis连接池,以便在需要时可以重用连接。 2. 创建Gin路由:使用Gin框架创建HTTP路由和处理程序。你可以定义不同的路由来处理各种请求。 3. 开启事务:在处理程序中,使用Redis的MULTI命令来开启一个事务。MULTI命令将后续的Redis命令添加到事务队列中,而不是立即执行它们。 4. 执行Redis命令:在事务中,使用Redis的各种命令(如SET、GET、INCR等)来执行你需要的操作。这些命令会被添加到事务队列中。 5. 执行事务:在事务中的所有命令都添加完成后,使用Redis的EXEC命令来执行整个事务Redis会按照添加的顺序依次执行队列中的命令,并返回每个命令的结果。 6. 处理事务结果:根据EXEC命令的返回结果,你可以判断事务是否执行成功。如果成功,你可以继续处理其他业务逻辑。如果失败,你可以回滚事务或进行其他错误处理。 需要注意的是,在Redis事务中,一旦EXEC命令被调用,Redis会将所有命令作为一个原子操作执行。这意味着要么所有命令都成功执行,要么都不执行。如果在事务执行期间发生了错误,你可以使用Redis的DISCARD命令来放弃执行事务的结果,并回滚到事务开始之前的状态。 希望这些步骤能帮助你在Gin和Redis中实现事务操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值