Redis对事务的支持目前还比较简单。Redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。当一个client在一个连接中发出multi命令时,这个连接会进入一个事务上下文,该连接后续的命令不会立即执行,而是先放到一个队列中,当执行exec命令时,redis会顺序的执行队列中的所有命令,若需要撤销队列中的所有命令也可以使用discard命令执行撤销。

试验1.启动并执行一个批处理(事务)
 redis 127.0.0.1:6379> mget name age   //读取键的值
 1) "zhangsan"
 2) "22"
 redis 127.0.0.1:6379> multi                  //启动批处理
 OK
 redis 127.0.0.1:6379> set name lisi       //设置name值
 QUEUED
 redis 127.0.0.1:6379> set age 25         //设置age值
 QUEUED
 redis 127.0.0.1:6379> incr age             //运算age值
 QUEUED
 redis 127.0.0.1:6379> exec                  //通过exec提交 处理
 1) OK
 2) OK
 3) (integer) 26
 redis 127.0.0.1:6379> mget name age   //查看结果 执行成功
 1) "lisi"
 2) "26"
      
 试验2.取消一个批处理(事务)
 redis 127.0.0.1:6379> mget name age
 1) "lisi"
 2) "26"
 redis 127.0.0.1:6379> multi
 OK
 redis 127.0.0.1:6379> set name wangwu
 QUEUED
 redis 127.0.0.1:6379> set age 28
 QUEUED
 redis 127.0.0.1:6379> discard                //使用discard取消批处理 回滚
 OK
 redis 127.0.0.1:6379> mget name age    //查看结果 没有执行
 1) "lisi"
 2) "26"

试验3.redis的批处理(事务)的不成熟性
 redis 127.0.0.1:6379> mget name age
 1) "lisi"
 2) "26"
 redis 127.0.0.1:6379> multi
 OK
 redis 127.0.0.1:6379> incr name
 QUEUED
 redis 127.0.0.1:6379> incr age
 QUEUED
 redis 127.0.0.1:6379> exec                                     //提交执行
 1) (error) ERR value is not an integer or out of range //试图字符串自增运算 报错属正常
 2) (integer) 27                                                       //整型自增运算 成功
 redis 127.0.0.1:6379> mget name age     //查看结果
 1) "lisi"                                                  //执行失败的
 2) "27"                                                  //age却被提交执行了??

注:一个成熟的事务应该只要有一个命令执行失败整个事务均会回滚,但此处age却执行了,待完善!

redis的简单事务的更多相关文章

  1. 架构师养成记--33.Redis哨兵、redis简单事务

    Redis哨兵 有了主从复制,如果我想想对主从服务器进行监控,在redis2.6后提供了哨兵机制,2.6有哨兵1.0版本,并不稳定.2.8以后的哨兵功能才稳定起来. 顾名思义,哨兵就是监控Redis系 ...

  2. Redis 中的事务

    Redis支持简单的事务 Redis与mysql事务的对比 Mysql Redis 开启 start transaction muitl 语句 普通sql 普通命令 失败 rollback 回滚 di ...

  3. redis中的事务

    首先明白在java中线程和进程的区别: 1.什么是多线程? 是指一个应用程序同时执行多个任务,一般来说一个任务就是一个线程 ,而一个应用程序有一个以上的线程我们称之为多线程. 2.什么是进程? 进程是 ...

  4. Redis 学习(三) —— 事务、消息发布订阅

    一.Redis事务 Redis 提供的事务机制与传统的数据库事务有些不同,传统数据库事务必须维护以下特性:原子性(Atomicity), 一致性(Consistency),隔离性(Isolation) ...

  5. redis 的简单命令

    以下实例讲解了如何启动 redis 客户端: 启动 redis 客户端,打开终端并输入命令 redis-cli.该命令会连接本地的 redis 服务. $redis-cli redis > re ...

  6. Redis数据库 02事务| 持久化| 主从复制| 集群

    1. Redis事务 Redis不支持事务,此事务不是关系型数据库中的事务: Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化.按顺序地执行.事务在执行的过程中,不会被其他客户端发送来的 ...

  7. Redis学习笔记-事务控制篇(Centos7)

    一.事务控制 1.简单事务控制 redis可以使用mult命令将之后的命令都存放在队列中,只有使用exec命令时才全部执行. 127.0.0.1:6379> multi OK 127.0.0.1 ...

  8. redis中的事务(版本2.6.16)

    一.命令支持 1.multi 开始事务 2.exec事务提交 3.取消事务discard 二.事务示例 1.示例 redis>set key1 20OKredis>mutilOKredis ...

  9. Redis的“假事务”与分布式锁

    关注公众号:CoderBuff,回复"redis"获取<Redis5.x入门教程>完整版PDF. <Redis5.x入门教程>目录 第一章 · 准备工作 第 ...

随机推荐

  1. JS基础,课堂作业,三个数字排序

    三个数字大小排序 <script> var a = parseInt(prompt("请输入第一个整数:")); var b = parseInt(prompt(&qu ...

  2. LDPC译码算法代码概述

    程序说明 V0.0 2015/1/24 LDPC译码算法代码概述   概述   本文介绍了包括LDPC_Simulation.m, ldpcdecoderbp1.m,ldpcdecoderminsum ...

  3. 前端--javaScript之简单介绍

    一.javaScript(以下简称js)的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.(客户端 ...

  4. 【SpringCloud】第十一篇: 断路器监控(Hystrix Dashboard)

    前言: 必需学会SpringBoot基础知识 简介: spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选. ...

  5. 优化 VR 动作类游戏《Space Pirate Trainer*》以便在英特尔® 集成显卡上实现卓越的表现

    Space Pirate Trainer* 是一款面向 HTC Vive*.Oculus Touch* 和 Windows Mixed Reality* 的原创发行游戏.版本 1.0 于 2017 年 ...

  6. python—退出ipython3的help()

    退出ipython3的help() 组合键:ctrl+z

  7. PytorchZerotoAll学习笔记(三)--自动求导

    Pytorch给我们提供了自动求导的函数,不用再自己再推导计算梯度的公式了 虽然有了自动求导的函数,但是这里我想给大家浅析一下:深度学习中的一个很重要的反向传播 references:https:// ...

  8. win2008 r2 开启TLS1.2

    Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityPr ...

  9. Alpha阶段中间产物——GUI Prototype、WBS及PSP

    作业地址:https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/1224 内容: GUI Prototype 我的书架 我的书架→添加图书 ...

  10. [转]有道云笔记markdown

    作为半个文字工作者,一天当中,一半时间用在遣词造句,一半时间则在死磕排版.当听说“前所未有的极简语法”Markdown,不仅能简化排版.大大提高书写效率,而且上手零门槛.好奇宝宝怎么忍得住一颗蠢蠢欲动 ...