Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证
-
事务是一个单独的隔离操作
事务中的所有命令都会序列化、按顺序地执行 事务在执行的过程中,不会被其他客户端发送来的命令请求所打断
-
事务是一个原子操作
事务中的命令要么全部被执行,要么全部都不执行
Redis 事务执行过程
一个事务从开始到执行会经历以下三个阶段
- 开始事务,使用
MULTI
命令 - 命令入队
- 执行事务,使用
EXEC
命令
范例
下面的范例演示了 Redis 事务如何工作
它先以 MULTI 开始一个事务, 然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务, 一并执行事务中的所有命令
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> SET site "www.cmsblogs.cn"
QUEUED
127.0.0.1:6379> GET site
QUEUED
127.0.0.1:6379> SADD lession "PHP" "HTML" "Python" "JavaScript"
QUEUED
127.0.0.1:6379> SMEMBERS lession
QUEUED
127.0.0.1:6379> EXEC
1) OK
2) "www.cmsblogs.cn"
3) (integer) 4
4) 1) "JavaScript"
2) "Python"
3) "HTML"
4) "PHP"
127.0.0.1:6379>
Redis 事务命令
下表列出了 Redis 事务的相关命令
命令 | 描述 |
---|---|
DISCARD | 取消事务,放弃执行事务块内的所有命令 |
EXEC | 执行所有事务块内的命令 |
MULTI | 标记一个事务块的开始 |
UNWATCH | 取消 WATCH 命令对所有 key 的监视 |
WATCH | 监视一个(或多个) key |
最新评论
徒弟可以A师傅,学生可以A老师,为什么外包不能A正式,我觉得很正常。异性相吸这是宇宙真理
PHP天下第一(狗头叼花)
第一个不需要关注公主号直接给激活码的帖子!
客户端超时断开后,服务端如果没有设置超时机制,那也会继续等待处理,万一这期间有消息到了,那不是就接受到消息处理了,但是也没有办法返回到客户端,导致消息丢失。
企业级GO项目开发实战 Kubernetes权威指南 第六版
https://pan.baidu.com/s/1q3bnTncIACKoTZFxvx7BQw?pwd=ii7n
RabbitMQ精讲,项目驱动落地,分布式事务拔高 有吗?
Spring Cloud Alibaba 微服务架构实战 https://pan.baidu.com/s/1jF5voFRoeF0lYAzAPBWSbw?pwd=chqk