Redis事务涉及的watch、multi等命令详解
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,Redis Watch 命令作用:用于监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。用法:redis 127.0.0.1:6379> WA
千家信息网最后更新 2025年11月08日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安全错误
数据库的锁怎样保障安全
子代队列数据库进展
海珠正规物联网软件开发
主城网络技术
网络安全宣传周观后感
数据软件开发方向学什么
网络安全期限
端游cf维修服务器要多久
软件开发创业项目的理由
绥化花海互联网科技有限公司
数据库mdf是什么文件格式
js通过c 数据库数据
汇川服务器er755
专业的计算机软件开发
网络安全类书
丝路传说哪个服务器最多
淄川染整软件开发服务
夏季网络安全教育平台
计算机网络安全性问题及对策论文
富民上门软件开发价格走势
中国网络安全企业排行榜
南京智能软件开发机构
简述数据库的目标和方法
密码服务器上的彩色密码怎么填
我的世界国际服超级战墙服务器
杭州青鸾网络技术有限公司
邯郸软件开发正规平台
博博软件开发选哪家
闲鱼服务器数量
服务器怎么拉黑别人
网络安全宣传周第一期