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

Redis事务基本操作、三特性与WATCH key命令

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

Redis事务基本操作、三特性与WATCH key命令

Redis事务和锁机制
1.Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按照顺序执行.事务在执行的过程中,不会被其它客户端发送的命令请求打断.
2.Redis事务的主要作用就是串联多个命令防止别的命令插队

1、事务—基本操作命令

multi: 输入的命令会依次进入命令队列中,进行组队,但不会执行    
exec: Redis会将之前的(存在Multi)命令队列中的命令依次执行
discard: 组队的过程中未执行Exec命令之前可通过discard来放弃组队

组队与执行案例:

 添加两条String类型数据
 multi:代表进行组队
 QUEUED:表示成功放入队列中
 exec:执行命令(返回OK代表执行成功)

组队后并取消案例:

添加两条String类型数据
multi:代表进行组队
QUEUED:表示成功放入队列中
discard:放弃组队(返回OK代表执行成功,放弃队列中的命令)

1.1、事务—事务的错误处理
1.组队中某个命令出现了报告错误,执行整个的所有队列时都会被取消
2.如果是执行阶段中某个命令出现错误,则只有报错的命令不会被执行,其它命令不会被影响(正常执行),不会回滚

组队阶段报错案例

添加第三条命令进行组队时报错
执行exec队列时也失败队列中所有的命令都不会执行


执行阶段报错案例

在组队过程中第三条命令给a1增1时没有报错
执行队列中所有命令时,提示第三条报错前两条OK
只有第三条没有执行成功,其它正在执行没有影响

2、事务三特性

2.1:单独的隔离操作:
    事务中的所有命令都会序列化、按顺序执行.事务在执行的过程中,
    不会被其它客户端发送过来的命令请求打断
2.2:没有隔离级别的概念:
    队列中的命令没有提交之前都不会实际被执行,因为事务提交前任
    何指令都不会被实际执行 
2.3:不保证原子性:
    事务中如果有一条命令执行失败,其后的命令仍然会执行,没有回滚

3、WATCH key
简介:
在执行multi之前,先执行watch key1 key2… 可监视一个或多个key,
如果在事务执行之前,这个(或这些多个key)被其它命令所改动,
那么事务将被打断

图下为案例

1.创建一条key为n2,value为100的数据
2.两条回话框都是要watch来进行监视n2
3.两条回话框都进行multi队列操作
4.两条对话框都给n2的value修改值
5.当图1先执行命令exec,显示成功值修改为200
6.当图2再进行执行时返回nil执行失败
(原理:如初始时n2版本为1.1,当图1执行exec命令完成后n2版本会修改为1.2
当图2再去执行exec命令时会进行与版本匹配,会发现匹配不成功)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1020837.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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