栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Redis事务操作

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Redis事务操作

1、Redis事务定义

Redis事务是一个单独的隔离操作,事务中所有的命令都会序列化,按顺序执行;事务执行的过程中,不会被其他客户端发来的命令请求打断。

Redis事务的主要作用就是串联多个命令,防止别的命令插队

做个图解释一下

如图所示,当前操作有三个命令在进行,此时其他客户端发来第四个命令,想要插入到第二和第三个命令之间,Redis已经将三个命令串联起来了,那么此时第四个命令想要插队是不被允许的。

2、Redis事务操作的三个基本命令(Multi、Exec、discard)

从输入Multi开始,没输入一个命令,都会将这个命令放到一个命令队列中,但不会执行,直到输入Exec后,Redis才会将命令队列中的命令按照它进入队列的顺序执行。
所以Multi称为组队阶段,Exec称为执行阶段。

组队的过程中可以使用discard命令放弃组队。

2.1、事务错误处理
  • 组队的过程中某个命令出现了报告错误,执行时整个队列都会被取消。
  • 如果在执行过程中某个命令出现了错误,其他命令会正常进行,只有报错的命令不会被执行,不会回滚。
3、Redis事务冲突问题 3.1、Redis事务相关命令
  • discard:取消事务,放弃执行事务块内的所有命令。
  • exec:执行所有事务块内的命令。
  • multi:标记一个事务块的开始。
  • unwatch::取消 WATCH 命令对所有 key 的监视。
  • WATCH key [key …]:监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。

案例:

3.2、 悲观锁

每次拿数据都认为别人会修改,所以每次拿数据都会上锁,这样别人想拿到这个数据就会block直到拿到锁。传统的关系型数据库就用到这样的锁机制,例如行锁,表锁,读锁,写锁,都是在操作之前先上锁。

3.3、 乐观锁

每次去拿数据都认为别人不会修改,所以不会上锁,但是在更新的时候会去判断在此期间有没有人去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高系统的吞吐量。Redis使用check-and-set机制实现事务。

Redis事务的三个特性
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/285299.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号