七天玩转Redis | 打卡第4天 Redis事务操作

妙七先生 2022-01-24 11:00:49

文章目录

  • 事务
  • 事务的三个特征
  • Redis中事务的执行过程
  • 执行过程中的涉及到的操作命令
  • 事务中的异常
  • 编译时异常
  • 执行时异常
  • Redis 中锁的实现

事务

指一件要做的事。在 Redis 中,事物本质上是指一组操作命令的集合。

事务的三个特征

  • 一次性

    一个事务在执行一次之后便无效了。换句话说,一个事务只能执行一次。

  • 顺序性

    在事务的执行过程中,命令集合中的命令会顺序执行

  • 排他性

    在事务对某一个数据进行操作的时候,该数据不能被其他事务所操作

Redis中事务的执行过程

img

执行过程中的涉及到的操作命令

命令作用
multi启动事务
exec事务执行
discard取消该事务(执行该命令后,该事务过程便会取消,已经输入的命令不会进入命令列)

事务中的异常

事务中的异常主要体现在「命令入列」环节中,如果命令输入错误,将会引发「编译时异常」;如果命令的执行逻辑发生错误,也会造成「运行时异常」

img

编译时异常

编译时异常发生的时候,事务不会执行。执行之后会报错

(error) EXECABORT Transaction discarded because of previous errors.

执行时异常

执行时异常发生时,只有该命令不会执行,其他没有错误的异常仍然会正常执行

Redis 中锁的实现

悲观锁:认为什么时候都可能出错,所以在任何时候都会加锁
乐观锁:认为什么时候都不会出错,所以什么时候都不会加锁,在更新的时候都要去判断,在次期间是否有人修改了数据。

在 Redis 中,使用 watch 命令去监视某一个数据。在给字段添加监控的情况下通过事务去操作字段,如果在未提交时,有新的命令修改了字段值,那么事务一定会提交失败。

相应的,可以使用 unwatch命令取消对某一个数据的监视。

...全文
42 1 打赏 收藏 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-大数据 发布问题, 以便更快地解决您的疑问

151

社区成员

发帖
与我相关
我的任务
社区描述
开源数据库
其他 其他
社区管理员
  • 数据库小助手
  • 灰小猿
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧