突击Redis数据库(六) 事务与锁

一. 事务

1. 事务简介:

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

2. 事务常用命令:
在这里插入图片描述

二. 事务的常见演示

1. 简单组队:
在这里插入图片描述
MULTI 开启组队,EXEC 依次执行队列中的命令。

DISCARD 中途取消组队
在这里插入图片描述
2. 组队失败:
在这里插入图片描述
此种情况,语法符合规范,Redis 只有在执行中,才可以发现错误。而在 Redis 中,并没有回滚机制,因此错误的命令,无法执行,正确的命令会全部执行!

3. 全体取消:
在这里插入图片描述
在编译的过程中,Redis 检测出来了错误的语法命令,因此它认为这条组队,一定会发生错误,因此全体取消;

4. 官方说明:
在这里插入图片描述

二. 锁

1. 悲观锁:

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

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

2. 乐观锁:

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

3. 5. Redis 中的锁策略:

Redis 采用了乐观锁策略(通过 watch 操作)。乐观锁支持读操作,适用于多读少写的情况!
在事务中,可以通过 watch 命令来加锁;使用 UNWATCH 可以取消加锁;
如果在事务之前,执行了 WATCH(加锁),那么执行 EXEC 命令或 DISCARD 命令后,锁对自动释放,即不需要再执行 UNWATCH 了
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值