Redis事务涉及的watch、multi等命令详解
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,Redis Watch 命令作用:用于监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。用法:redis 127.0.0.1:6379> WA
千家信息网最后更新 2026年11月02日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安全错误
数据库的锁怎样保障安全
高科技互联网
美国互联网保险保险科技
科技类互联网
世界互联网领先科技成果
广西互联网科技公司
掌上梦互联网科技
亿人帮互联网科技
人人互联网科技是培训
太原新华互联网科技学校怎么样
互联网汽车科技小镇
福州新华互联网科技学校 知乎
科技互联网大厂
速维有品互联网信息科技(苏州)有限公司
天津腾达互联网科技有限公司
梅州GM互联网络科技有限公司
美国五大互联网科技公司市值多少
互联网科技创新创业项目
安徽九吞吴互联网科技有限公司
网互联网络科技
高科技和互联网的现代国家
壹账通互联网科技
善班互联网科技有限公司
中国最先进互联网科技公司
健康食品互联网创新科技园项目
燊美集互联网科技有限公司
西安小鹰速贷互联网科技有限公司
互联网科技和法律行业
江苏互联网科技小贷
信承诺互联网科技有限公司
银川新华互联网科技学校原画