`
backend-develop
  • 浏览: 24556 次
社区版块
存档分类
最新评论

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)

 

原文地址:http://caiguoqing.org/post/111

0
0
分享到:
评论

相关推荐

    springboot-redis事务

    在处理Redis事务时,我们需要根据实际需求选择合适的方法,可能是简单的`MULTI/EXEC`,也可能是基于Lua脚本的分布式事务,甚至采用更复杂的分布式事务管理框架。理解这些概念和技术,有助于我们在实际项目中更好地...

    redis事务与关系型数据库事务比较

    - MySQL 通过 `ROLLBACK` 事务来撤销已执行的操作,Redis 使用 `DISCARD` 命令取消事务,但它不会回滚已执行的命令,因为Redis的事务在 `EXEC` 之前不执行任何命令。 3. **提交事务**: - MySQL 使用 `COMMIT` ...

    redis事务回滚工具

    基于SpringBoot的轻量级redis事务回滚机制,使用栈和ThreadLocal记录业务链的redis操作,发生异常进行回滚,参考了阿里巴巴Seata AT模式的db回滚策略:补偿回滚,记录前镜像与当前操作语句,反向解析生成补偿动作。...

    redis事务常用操作详解

    Redis 事务是数据库系统中的一种特性,允许用户一次性提交...例如,Redis事务不支持回滚操作,如果事务中的某条命令失败,后续命令仍会执行。因此,在设计使用Redis的事务时,需要考虑到这些限制并进行适当的错误处理。

    记录redisson实现redis分布式事务锁

    本篇文章将详细探讨如何使用Redisson实现Redis分布式事务锁,以及在Spring Boot环境中如何进行集成。 首先,Redis作为一个内存数据库,其高速读写性能使其成为实现分布式锁的理想选择。分布式锁的主要作用是在多...

    redis常用命令,redis配置文件,redis持久化,redis事务,redis主从复制,jedis的使用

    下面是对 Redis 的常用命令、配置文件、持久化、事务、主从复制、Jedis 使用的详细讲解。 Redis 常用命令 Redis 提供了很多有用的命令来管理和操作数据。下面是一些常用的 Redis 命令: * SET key value:设置...

    cpp-Redis分布式事务

    例如,使用`cpp-redis`库,我们可以方便地发送`MULTI`命令开始一个事务,接着依次执行多个命令(如`SET`、`INCR`等),最后通过`EXEC`命令提交事务。如果在事务执行过程中出现错误,Redis会回滚所有操作,确保数据...

    redis事务_动力节点Java学院整理

    例如,假设客户端 A 使用 `WATCH` 监控键 `key1`,然后启动事务,如果在 `EXEC` 执行前,键 `key1` 被客户端 B 修改,那么事务会失败,客户端 A 可以根据返回的 `nil` 来判断事务是否成功。这样可以确保在执行事务时...

    Redis事务的使用

    一、Redis事务简介 Redis事务可以一次执行多个命令,一个事务的所有命令都会序列化并按顺序地串行化执行,而不会被其他客户端提交的命令请求插入到事务执行命令序列中。 二、Redis事务命令 下面的表格节选自:...

    redis事务1

    下面我们将深入探讨 Redis 事务的工作原理、特点以及使用方法。 首先,Redis 事务通过 `MULTI` 命令开始,这标志着事务的启动。一旦执行 `MULTI`,Redis 服务器会进入事务模式,接收到的所有命令都会被添加到一个...

    redis中文使用手册

    本手册将深入探讨Redis的使用方法及其中文API,帮助用户更好地理解和操作Redis。 一、Redis基本概念 1. 数据类型:Redis支持五种基本数据类型,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合...

    第7单元 Redis事务与持久化1

    【Redis事务】 Redis事务是Redis数据库中提供的一种确保数据操作原子性的机制,它允许用户在一个操作序列中执行多条命令,这些命令会被串行化并按顺序执行,以保证在并发环境下的数据一致性。事务的开启是通过`MULTI...

    redis详细使用手册

    了解这些数据类型的使用场景和操作方法是掌握Redis的基础。 2. **命令操作**:Redis提供了丰富的命令来操作这些数据类型,如`SET`、`GET`用于字符串,`HSET`、`HGET`用于哈希,`LPUSH`、`RPOP`用于列表,`SADD`、`...

    redis事务处理:(error) EXECABORT

    然而,事务处理并非总是顺利进行,"redis事务处理:(error) EXECABORT" 是一个常见的错误提示,意味着在执行事务时遇到了问题。本文将深入探讨这个错误的原因以及如何解决。 一、Redis 事务基础 Redis 的事务机制...

    C# Redis 基础使用

    本教程将引导初学者掌握C#中Redis的基本使用。 首先,安装StackExchange.Redis库。通过NuGet包管理器,搜索并安装"StackExchange.Redis",它提供了丰富的API来操作Redis。 1. 连接Redis服务器: 使用`...

    Redis之Redis事务

    本文主要介绍了Redis事务的概念、Redis不保证原子性、Redis事务的三个阶段、Redis事务相关命令以及Redis事务使用案例。 本文来自于博客园,由火龙果软件Anna编辑、推荐。Redis事务的本质是一组命令的集合。事务支持...

    redis安装及使用

    除此之外,Redis还具备丰富的功能特性,例如复制(Replication)、Lua脚本执行、LRU淘汰策略、事务支持以及不同的持久化选项。通过Redis Sentinel和自动分区(Cluster)功能,Redis还能提供高可用性和分布式部署的...

Global site tag (gtag.js) - Google Analytics