的事务控制主要由如下几个命令:
MULTI 、 EXEC 、 DISCARD 和 WATCH
其中multi是用来开启一个事务、exec是提交事务、discard取消事务、watch是用来实现乐观锁。
注意:redis对事务的支持非常简单,它只能保证事务中的操作不被其他客户端打断。
还有redis事务不会自动回滚,也就是事务队列中不会因为一个操作的失败而自动回滚其他操作,这一点是与关系型数据库不一样的地方请注意。
下面就通过代码来实现一下事务:
[redies@localhost redis-2.4]$ redis-cli
redis 127.0.0.1:6379> auth xuelianbo
OK
redis 127.0.0.1:6379> keys *
1) "name"
redis 127.0.0.1:6379> multi //开启一个事务的上下文
OK
redis 127.0.0.1:6379> set name xue //执行各种写的操作
QUEUED
redis 127.0.0.1:6379> set name lian
QUEUED
redis 127.0.0.1:6379> exec //提交事务队列
1) OK
2) OK
redis 127.0.0.1:6379> get name
"lian"
redis 127.0.0.1:6379> multi
OK
redis 127.0.0.1:6379> set name 1
QUEUED
redis 127.0.0.1:6379> discard //取消事务队列
OK
redis 127.0.0.1:6379> get name
"lian"
redis 127.0.0.1:6379> set age 10
OK
redis 127.0.0.1:6379> multi
OK
redis 127.0.0.1:6379> incr age
QUEUED
redis 127.0.0.1:6379> incr name
QUEUED
redis 127.0.0.1:6379> exec //提交事务
1) (integer) 11 //此处就出现了,部分成功的现象
2) (error) ERR value is not an integer or out of range
redis 127.0.0.1:6379> keys *
1) "age"
2) "name"
redis 127.0.0.1:6379> watch age //制造一个乐观锁,watch age
OK
redis 127.0.0.1:6379> multi
OK
redis 127.0.0.1:6379> set age 11
QUEUED
redis 127.0.0.1:6379> set age 12
QUEUED
redis 127.0.0.1:6379> exec
1) OK
2) OK
redis 127.0.0.1:6379> watch age //制造一个乐观锁的情形, 提交前其他客户端修改了watch的对象
OK
redis 127.0.0.1:6379> multi
OK
redis 127.0.0.1:6379> set age 12
QUEUED
redis 127.0.0.1:6379> exec
(nil) //返回修改失败
redis 127.0.0.1:6379>
下面是另一个客户端制造乐观锁的指令,其实就是在上面的回话watch的时候进行了age的修改。
[redies@localhost redis-2.4]$redis-cli redis 127.0.0.1:6379> keys * (error) ERR operation not permitted redis 127.0.0.1:6379> auth xuelainbo (error) ERR invalid password redis 127.0.0.1:6379> auth xuelianbo OK redis 127.0.0.1:6379> keys * 1) "age" 2) "name" redis 127.0.0.1:6379> set age 20 OK redis 127.0.0.1:6379>
相关推荐
08-Redis HyperLogLog与事务和Redis 7.0那点事_ev.rar08-Redis HyperLogLog与事务和Redis 7.0那点事_ev.rar08-Redis HyperLogLog与事务和Redis 7.0那点事_ev.rar08-Redis HyperLogLog与事务和Redis 7.0那点事_ev.rar...
自己封装redisson方法,同时通过注解的方式加入redis分布式事务锁,可靠。
文档列举了redis环境的事务与关系型数据库的事务的区别
SSM框架+redis+druid事务控制+定时任务介绍+sql脚本+测试说明及请求路径,内涵redis免安装文件,txt文档说明,我用的是myeclipse2014+tomcat8配置启动的
springboot-redis事务
基于rabbitmq+redis实现分布式事务项目源码.zip 基于rabbitmq+redis实现分布式事务项目源码.zip 基于rabbitmq+redis实现分布式事务项目源码.zip 基于rabbitmq+redis实现分布式事务项目源码.zip 基于rabbitmq+redis...
redis的高级事务CAS(乐观锁).rar
基于SpringBoot的轻量级redis事务回滚机制,使用栈和ThreadLocal记录业务链的redis操作,发生异常进行回滚,参考了阿里巴巴Seata AT模式的db回滚策略:补偿回滚,记录前镜像与当前操作语句,反向解析生成补偿动作。...
在大型游戏中经常使用分布式,分布式中因为游戏逻辑会经常游戏事务,借助redis某些特性我们可以实现分布式锁和分布式事务。
本文实例讲述了redis中的事务操作。分享给大家供大家参考,具体如下: redis与mysql的事务 Redis支持简单的事务 简单使用 讲张三的100圆钱转账给lisi: set zhangsan 800 set lisi 100 multi decrby zhangsan 100 ...
基于北京尚硅谷周阳老师讲解的redis。个人学习总结: 包含redis常用命令,redis配置文件,redis持久化,redis事务,redis主从复制,jedis的使用。
Magento-Redismanager, 在 Magento,用于Redis的超级用户控制 Redis 管理Redis服务的实用程序特性系统> 配置>的自动或者手动配置高级> Redis管理在负载均衡环境中缓存服务不同的理想情况直接从magento面板管理员管理...
本文主要介绍了Redis事务的概念、Redis不保证原子性、Redis事务的三个阶段、Redis事务相关命令以及Redis事务使用案例。 本文来自于博客园,由火龙果软件Anna编辑、推荐。Redis事务的本质是一组命令的集合。事务支持...
redis面试题 redis面试题之事务
Redis从入门到精通高清,迅雷播放器组件可顺利播放
Redis事务可以一次执行多个命令(按顺序地串行执行,执行中不会被其他命令插入,不许加塞) 1.简介 Redis事务可以一次执行多个命令(允许在一次单独的步骤中执行一组命令)。 特征: [1]批量操作在发送EXEC命令前被放入...
Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows ...
redisredis redis redis redis
Redis学习手册 事务 doc Redis学习资料 rar redis讲义 doc">redis 2 8 13 tar gz redisbin x32 zip redisbin x64 zip Redis学习手册 Hash数据类型 doc Redis学习手册 Key操作命令 doc Redis学习手册 List数据类型 ...