Redis事务使用方法
Redis事务
Redis事务是一组命令的集合,也是Redis的最小执行单位之一。一个事务的所有命令,要么都执行,要么都不执行。Redis能保证事务执行期间不会有其他命令插入。
相关命令
| 命令 | 格式 | 说明 |
| DISCARD | DISCARD | 取消事务 |
| EXEC | EXEC | 执行事务中的命令 |
| MULTI | MULTI | 标记一个事务的开始 |
| UNWATCH | UNWATCH | 取消对key的监视 |
| WATCH | WATCH key [key ...] | 监视一个或多个key |
执行MULTI后,在EXEC或DISCARD之前发送的所有命令都会被Redis按顺序缓存起来,并返回QUEUED。执行EXEC后,Redis取出缓存的命令开始执行,并返回每一条命令的返回值。
使用WATCH监控的key如果发生了变化,事务将被打断。在EXEC或DISCARD执行后,WATCH监控自动失效,否则使用UNWATCH取消监控。
注意:
①执行MULTI后不能再执行WATCH,否则返回错误“WATCH inside MULTI is not allowed”;
②如果命令有语法错误Redis会报错,但是运行时出现的错误会被Redis忽略不影响后面的执行,需要自己确保不出现运行时错误;
使用方法
1、事务正常执行
192.168.1.100:6379> multi
OK
192.168.1.100:6379> set testkey 1
QUEUED
192.168.1.100:6379> incr testkey
QUEUED
192.168.1.100:6379> get testkey
QUEUED
192.168.1.100:6379> exec
1) OK
2) (integer) 2
3) "2"
2、WATCH监控的key变化,事务被打断
192.168.1.100:6379> watch testkey
OK
192.168.1.100:6379> multi
OK
192.168.1.100:6379> set testkey 1
QUEUED
# 此时另一个客户端执行 set testkey 2 改变了testkey的值
192.168.1.100:6379> exec
(nil)
Redis事务使用方法的更多相关文章
- Redis学习笔记~Redis事务机制与Lind.DDD.Repositories.Redis事务机制的实现
回到目录 Redis本身支持事务,这就是SQL数据库有Transaction一样,而Redis的驱动也支持事务,这在ServiceStack.Redis就有所体现,它也是目前最受业界认可的Redis ...
- redis 事务
概述 相信学过MySQL等其他数据库的同学对事务这个词都不陌生,事务表示的是一组动作,这组动作要么全部执行,要么全部不执行.为什么会有这样的需求呢?看看下面的场景: 微博是一个弱关系型社交网络,用户之 ...
- Redis事务和分布式锁
Redis事务 Redis中的事务(transaction)是一组命令的集合.事务同命令一样都是Redis最小的执行单位,一个事务中的命令要么都执行,要么都不执行.Redis事务的实现需要用到 MUL ...
- Redis事务介绍
概述 相信学过Mysql等其他数据库的同学对事务这个词都不陌生,事务表示的是一组动作,这组动作要么全部执行,要么全部不执行.为什么会有这样的需求呢?看看下面的场景: 微博是一个弱关系型社交网络,用户之 ...
- Redis事务为什么不支持回滚
在事务运行期间,虽然Redis命令可能会执行失败,但是Redis仍然会执行事务中余下的其他命令,而不会执行回滚操作,你可能会觉得这种行为很奇怪.然而,这种行为也有其合理之处:只有当被调用的Redis命 ...
- redis事务浅析
事务可以简单理解为:把多件事当做一件事情处理,要么一起成功,要么一起失败.在Spring中可以配置一个事务管理器,然后在要进行事务处理的方法上添加@Transactional注解就可以了. 对于red ...
- spring的声明式事务,及redis事务。
Redis的事务功能详解 http://ghoulich.xninja.org/2016/10/12/how-to-use-transaction-in-redis/ MULTI.EXEC.DISCA ...
- Spring Boot2.0之 整合Redis事务
Redis事物 Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证: 事务是一个单独的隔离操作:事务中的所有命令都会序列化.按顺序地执行.事务在执行的过程中,不会被其他客户端发送来的命 ...
- 一文了解:Redis事务
Redis事务 事务提供了一种"将多个命令打包,一次性提交并按顺序执行"的机制,提交后在事务执行中不会中断.只有在执行完所有命令后才会继续执行来自其他客户的消息. Redis中的使 ...
随机推荐
- 这里有一份Java程序员的珍藏书单,请您注意查收
前言 不要因为迷茫,而停止了脚下前进的路.给大家推荐一份Java程序员必看的书单,豆瓣评分都挺不错的,每一本都值得去读,都值得去收藏,加油呀 本文已经收录到github https://github. ...
- Python练习题 031:Project Euler 003:最大质因数
本题来自 Project Euler 第3题:https://projecteuler.net/problem=3 # Project Euler: Problem 3: Largest prime ...
- kubernetes下jenkins实战maven项目编译构建
关于kubernetes环境的jenkins集群 在kubernetes环境部署的jenkins集群,执行任务时会新建pod,任务完成后pod被销毁,架构如下所示: 在kubernetes搭建jenk ...
- 035 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 02 多重if结构
035 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 02 多重if结构 本文知识点:Java中的多重if结构 选择结构回顾 if选择结构 注意: 1.条 ...
- 设备通讯——RS232
RS232的接口有两种--一种公头.一种母头,两种头的引脚是有区别的 MAX232电路图: 注意:串口通讯需要交叉接线.
- 万万没想到!ModelArts与AppCube组CP了
摘要:嘘,华为云内部都不知道的秘密玩法,我悄悄告诉您! 双"魔"合璧庆双节 ↑开局一张图,故事全靠编 华为云的一站式开发平台ModelArts和应用魔方AppCube居然能玩到一起 ...
- C# Socket TCP发送图片与接收图片
如果需要查看更多文章,请微信搜索公众号 csharp编程大全,需要进C#交流群群请加微信z438679770,备注进群, 我邀请你进群! ! ! --------------------------- ...
- 踩坑 Pycharm 2020.1.1 安装/ JetBrains破解/ anacode配置
引言 网上的办法试了很多,通常不能解决问题,还会引发一些负效应,选取了一个试了两天终于成功的方案记录一下备用. Pycharm安装 https://www.jetbrains.com/pycharm/ ...
- Linux Centos7 安装Docker-CE
先确保yum 是最新版本 执行: sudo yum update 添加docker源地址 sudo yum-config-manager --add-repo https://download.doc ...
- 使用composer 显示错误美化
新建comoser.json { "name": "brady_frmwork", "description":"php fram ...