Redis学习---(14)Redis 事务
Redis 事务
Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:
- 批量操作在发送 EXEC 命令前被放入队列缓存。
- 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
- 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。
一个事务从开始到执行会经历以下三个阶段:
- 开始事务。
- 命令入队。
- 执行事务。
实例
以下是一个事务的例子, 它先以 MULTI 开始一个事务, 然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务, 一并执行事务中的所有命令:
redis 127.0.0.1:6379> MULTI
OKredis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days"
QUEUEDredis 127.0.0.1:6379> GET book-name
QUEUEDredis 127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series"
QUEUEDredis 127.0.0.1:6379> SMEMBERS tag
QUEUEDredis 127.0.0.1:6379> EXEC
1) OK
2) "Mastering C++ in 21 days"
3) (integer) 3
4) 1) "Mastering Series"2) "C++"3) "Programming"
单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。
事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。
这是官网上的说明 From redis docs on transactions:
It's important to note that even when a command fails, all the other commands in the queue are processed – Redis will not stop the processing of commands.
比如:
redis 127.0.0.1:7000> multi
OK
redis 127.0.0.1:7000> set a aaa
QUEUED
redis 127.0.0.1:7000> set b bbb
QUEUED
redis 127.0.0.1:7000> set c ccc
QUEUED
redis 127.0.0.1:7000> exec
1) OK
2) OK
3) OK
如果在 set b bbb 处失败,set a 已成功不会回滚,set c 还会继续执行。
Redis 事务命令
下表列出了 redis 事务的相关命令:
序号 | 命令及描述 |
---|---|
1 |
DISCARD 取消事务,放弃执行事务块内的所有命令。 |
2 |
EXEC 执行所有事务块内的命令。 |
3 |
MULTI 标记一个事务块的开始。 |
4 |
UNWATCH 取消 WATCH 命令对所有 key 的监视。 |
5 |
WATCH key [key ...] 监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。 |
Redis学习---(14)Redis 事务相关推荐
- Redis学习笔记---Redis的事务
Redis学习笔记-Redis的事务 1. Redis事务(弱事务)和Mysql事务对比 Atomicity(原子性):构成事务的的所有操作必须是一个逻辑单元,要么全部执行,要么全部不执行. Redi ...
- Redis学习笔记~Redis在windows环境下的安装
Redis是一个key-value的存储系统,它最大的特点就是可以将数据序列化到文件中. redis存储在服务器的内存或者文件中,它不是session,不是cookies,它只是个更安全,更稳定,更可 ...
- 【Redis】14.Redis高级数据类型Bitmaps、HyperLogLog、GEO
[Redis]14.Redis高级数据类型Bitmaps.HyperLogLog.GEO Bitmaps:用比特位进行快速的状态统计 Bitmaps基本操作 Bitmaps不是一个新的数据类型,而是s ...
- Redis学习笔记---Redis的主从复制
Redis学习笔记-Redis的主从复制 1.Redis的高可用性 高可用性(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性. Rei ...
- Redis学习笔记---Redis的模式订阅与退订
Redis学习笔记-Redis的模式订阅与退订 1.发布订阅简介 发布订阅是一种通信的模式,Redis提供了发布订阅功能,可以用于消息的传输 Redis的发布订阅机制包括三个部分,publisher( ...
- 【Redis学习】Transaction事务管理
1.相关命令: (1)MULTI 标记一个事务块的开始.事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行. 返回值:总是返回 OK . redis ...
- Redis 学习 - 2.Redis高级:RDB AOF 事务 锁 删除策略 Bitmaps HyperLogLog GEO
目录 2. Redis高级 2.1 Redis Linux安装 047-Linux安装redis 048-指定端口启动服务 049-指定配置文件启动服务 050-配置文件启动目录管理 2.2 持久化 ...
- 【Redis学习】Redis管理命令总结
1.键管理 之前通过对五种数据类型的操作命令的学习发现,Redis在对每种数据进行处理之前,都要先指定该数据的key,然后再指定对该数据进行何种操作. Redis中的key有点类似于Java中的变量名 ...
- Redis学习之Redis概述及原理、基本操作及持久化
一.Redis介绍 Redis是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. 它通常被称为数据结构服务 ...
- Redis学习之Redis概述与安装以及性能测试
Redis入门 概述 Redis是什么 Redis(remote dictionary server)远程字典服务器 是一个开源的使用c语言编写.支持网络.可基于内存亦可持久化的日志型.key-val ...
最新文章
- java-mybaits-00101-基础安装配制
- 剑指offer-面试题13.在O(1)时间删除链表节点
- 【JDK1.8】Java HashMap实现细节
- laravel项目白屏问题解决办法及原因
- 传送带(洛谷-P2571)
- 远离ARP*** ARP防火墙新版发布
- 华为平板wps语音朗读_打工人必备的手机端WPS小技巧
- 【OpenStack】【Keystone】安装与配置详解
- Android 系统(83)---屏幕尺寸
- Replication Backlog
- python导入自定义模块_ubuntu下Python导入自定义模块的方法
- Linux计划任务之_Crontab
- 关于单利模式的几种实现方式
- beanstalkd最佳实践-编程开发
- android 圆形进度条样式,Android编程之ProgressBar圆形进度条颜色设置方法
- LLC谐振变换器工作模态分析
- 诺基亚CEO埃洛普的2012:煎熬中看到希望
- js截取url问号前面_JS获取URL中问号后面参数值
- 一年规划: 服务器后端+分布式+微服务+具有产品思维,20210504
- jquery 自动触发事件tigger()
热门文章
- strassen算法java_使用java写的矩阵乘法实例(Strassen算法)_Java_软件编程
- ubuntu10.04下 简单配置samba
- java8 functionalinterface注解_@FunctionalInterface注解的使用
- php oracle数据库连接池,数据库管理Oracle 连接池信息的修改
- redis怎么确认启动成功_不懂分Redis?现在开始动手!
- 计算机专业自我总结1000字,计算机专业自我鉴定范文1000字
- Java面试之设计模式七大原则
- Mysql的七种表类型
- [BZOJ3566][SHOI2014]概率充电器
- Python学习 第3天 VS与PyCharm使用对比