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 ...
最新文章
- adnroid 打包问题 :compileReleaseJavaWithJavac
- Centos环境下部署游戏服务器-软件安装
- 2020年后台开发程序员应该学习的8大技术
- python解释器下安装z3_再次:在Windows上安装Z3 Python
- codesys com库_CoDeSys官方系统库在线下载,替换国内下载服务器教程
- k均值的损失函数_K-Means算法的实现
- Eclipse中如何更改工作空间(之前一直不知道,几天终于知道了!)。
- CLISP语言中的哈希表
- 复合类型(json)
- Linux 实现OpenSSL 服务器端客户端通信
- 史上最详[ZI]细[DUO]的wfuzz中文教程(一)——初识wfuzz
- XBL绑定组建的实例
- 边缘检测(opencv_python下)
- 简账(开源记账软件)-功能介绍
- 大疆产品上岸经验分享
- Java中-> 是什么意思
- 纽约大学计算机与科学,纽约大学计算机科学专业研究生入学要求
- html添加蒙层,html蒙层弹窗
- CentOS软件管理 - YUM工具
- XenServer中本地磁盘管理
热门文章
- STM32 位段详解
- 对I2C总线协议的一些理解
- 高性能自旋锁 MCS Spinlock 的设计与实现(来自IBM)
- STM32 FSMC/FMC原理保姆级讲解(二)
- 机器人局部避障的动态窗口法(dynamic window approach)
- java pecs_Java 泛型: 什么是PECS(Producer Extends, Consumer Super)
- efl是什么意思_efl
- 力扣868. 二进制间距
- Elasticsearch进阶
- 类型的方法,以及关于Stringbuffer和String builder的相关补充