Redis事务涉及的watch、multi等命令详解
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,Redis Watch 命令作用:用于监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。用法:redis 127.0.0.1:6379> WA
千家信息网最后更新 2025年01月21日Redis事务涉及的watch、multi等命令详解
Redis Watch 命令
作用:
用于监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。
用法:
redis 127.0.0.1:6379> WATCH key1 key2
OK
Redis Unwatch 命令
作用:
用于取消 WATCH 命令对所有 key 的监视。
用法:
redis 127.0.0.1:6379> UNWATCH
OK
Redis Multi 命令
作用:
用于标记一个事务块的开始。事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行。
用法:
redis 127.0.0.1:6379> MULTI # 标记事务开始OKredis 127.0.0.1:6379> INCR user_id # 多条命令按顺序入队QUEUEDredis 127.0.0.1:6379> INCR user_idQUEUEDredis 127.0.0.1:6379> INCR user_idQUEUEDredis 127.0.0.1:6379> PINGQUEUEDredis 127.0.0.1:6379> EXEC # 执行1) (integer) 12) (integer) 23) (integer) 34) PONG
利用watch实现incr
具体做法如下:
WATCH mykey val = GET mykey val = val + 1 MULTI SET mykey $val EXEC
在获取mykey的值之前先通过WATCH命令监控了该键,此后又将set命令包围在事务中,这样就可以有效的保证每个连接在执行EXEC之前,如果当前连接获取的mykey的值被其它连接的客户端修改,那么当前连接的EXEC命令将执行失败。这样调用者在判断返回值后就可以获悉val是否被重新设置成功。
注意点:
•由于WATCH命令的作用只是当被监控的键值被修改后阻止之后一个事务的执行,而不能保证其他客户端不修改这一键值,所以在一般的情况下我们需要在EXEC执行失败后重新执行整个函数。
•执行EXEC命令后会取消对所有键的监控,如果不想执行事务中的命令也可以使用UNWATCH命令来取消监控。
示例:
打开两个redis-cli命令行窗口 session 1 和 session 2
session 1:redis 127.0.0.1:6379> set test 1 # 设置test="1"OKredis 127.0.0.1:6379> get test # 获取到test的值为"1""1"redis 127.0.0.1:6379> watch test # 监视testOKredis 127.0.0.1:6379> multi # 开启事务OKredis 127.0.0.1:6379> set test 2 # 将test设为"2"QUEUEDredis 127.0.0.1:6379> exec # 待 session 2 执行完毕后再执行 session 1 的exec命令,发现执行失败(nil)redis 127.0.0.1:6379> get test # 获取test的值,发现test值为 session 2 中所设置的"3""3"redis 127.0.0.1:6379> unwatch # 取消监视所有keyOKredis 127.0.0.1:6379> set test 4 # 非事务变更test的值为"4"OKredis 127.0.0.1:6379> get test # 获取到test="4""4"session 2: redis 127.0.0.1:6379> get test # 获取到了 session 1 创建的test="1""1"redis 127.0.0.1:6379> watch test # 监视testOKredis 127.0.0.1:6379> multi # 开启事务OKredis 127.0.0.1:6379> set test 3 # 将test设为"3"QUEUEDredis 127.0.0.1:6379> exec # 执行事务1) OKredis 127.0.0.1:6379> get test # 获取到test="3""3"
总结
以上所述是小编给大家介绍的Redis事务涉及的watch、multi等命令,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
命令
事务
监视
作用
监控
多条
客户
客户端
标记
顺序
保证
有效
成功
两个
做法
先后
函数
原子
只是
多个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
电商erp软件开发服务多少钱
镇开展国家网络安全宣传周
vr软件开发成本
医院网络安全检查记录表
财务网络安全制度主要内容
php读取数据库并计算
网络安全冬奥会准备情况
统计筛选软件开发
云服务器挂载游戏
服务器一共有多少个盘
数据库工程师经常出差吗
计算机网络技术好的学校
易语言每天获取文本数据库
计算机网络安全问题实例
税务网络安全检查自查报告
山东网络技术学院官网
linux 服务器安全性
如何为软件配置数据库
网络安全又称为什么
宁波学软件开发教程
磁县一站式建网站需要服务器吗
天龙八部荣耀版服务器找回
怎么设置自家网络安全性
互联网金融科技高校排名
杭州一狐网络技术有限公司外包
网络安全冬奥会准备情况
esri软件开发竞赛
ps3登不了服务器
动态网服务器
网络安全法是哪一年颁布