事务

*ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

redis 通过multi  exec  watch 实现事务

  • 事务开始
  • 命令入队
  • 事务执行

一、事务开始-- mulit

mulit 标志事务开始,将客户端从非事务状态切换到事务状态

# redis-cli
127.0.0.1:> multi
OK
127.0.0.1:> set sc 'sc-001'QUEUED
127.0.0.1:> set sc 'sc-002'QUEUED
127.0.0.1:> set sc 'sc-003'QUEUED
127.0.0.1:> get scQUEUED
127.0.0.1:> exec
) OK
) OK
) OK
) "sc-003"
127.0.0.1:>

二、命令入队

  客户端-非事务状态:输入的命令立即执行

  客户端-事务状态:输入命令exec discard watch mulit 会立即执行,其他不立即执行,而将命令入队等待执行。

三、事务执行--exec

  exec 命令 执行事务。遍历事务命令队列,执行所有命令返回客户端。

四、watch命令

  乐观锁 -- exec执行前,监视的键只要有修改,拒绝执行事务。返回客户端空回复

  修改命令执行后会将客户端的REDIS_DIRTY_CAS标识打开,标志客户端的事务安全性被破坏。

五、Redis事务ACID性质

  1、原子性,要不都执行,要不都不执行。redis不支持回滚机制。

  2、一致性,因为redis对错误命令不执行,所以数据库可以避免没有非法或者无效数据。

    入队错误、执行错误、服务器停机

  3、隔离性,redis是单线程方式执行事务,事务有隔离性。

  4、耐久性,redis开启了持久化,那么事务也会持久化到硬盘。

Redis 设计与实现 (七)--事务的更多相关文章

  1. 探索Redis设计与实现14:Redis事务浅析与ACID特性介绍

    本文转自互联网 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial ...

  2. Redis | 第8章 发布订阅与事务《Redis设计与实现》

    目录 前言 1. 发布订阅 1.1 频道的订阅与退订 1.2 模式的订阅与退订 1.3 发送消息 1.4 查看订阅消息 2. 事务 2.1 事务的实现 2.2 WATCH 命令的实现 2.3 事务的 ...

  3. Redis设计原理简介

    学完MySQL InnoDB之后,又开始学习和研究Redis. 首先介绍下书:<Redis设计与实现>第二版 黄健宏著,机械工业出版社,388页,基于redis3.0版本.版本有点低,这个 ...

  4. 《Redis设计与实现》知识点目录

    Redis设计与实现 第一部分 数据结构与对象 第二章 简单动态字符串 p8 简单动态字符串SDS 2.1 SDS的定义 p9 每个sds.h/sdshdr结构表示一个SDS值 2.2 SDS与C字符 ...

  5. Redis设计与实现(一~五整合版)【搬运】

    Redis设计与实现(一~五整合版) by @飘过的小牛 一 前言 项目中用到了redis,但用到的都是最最基本的功能,比如简单的slave机制,数据结构只使用了字符串.但是一直听说redis是一个很 ...

  6. 《Redis设计与实现》读书笔记

    <Redis设计与实现>读书笔记 很喜欢这本书的创作过程,以开源的方式,托管到Git上进行创作: 作者通读了Redis源码,并分享了详细的带注释的源码,让学习Redis的朋友轻松不少: 阅 ...

  7. Redis设计与实现:读书笔记之二

    1.数据库 Redis服务器一般包含多个db,默认16个. 切换数据库 每个redis客户端都有自己的目标数据库,默认为0,可以通过select 1,切换数据库. 设置键的生存周期和过期时间 PTTL ...

  8. 论 大并发 下的 乐观锁定 Redis锁定 和 新时代事务

    在 <企业应用架构模式> 中 提到了 乐观锁定, 用 时间戳 来 判定 交易 是否有效, 避免 传统事务 的 表锁定 造成 的 瓶颈 . 在 现在的 大并发 的 大环境下, 传统事务 及其 ...

  9. 《Redis设计与实现》

    <Redis设计与实现> 基本信息 作者: 黄健宏 丛书名: 数据库技术丛书 出版社:机械工业出版社 ISBN:9787111464747 上架时间:2014-6-3 出版日期:2014 ...

随机推荐

  1. 记一次物理机安装centos7.5 出现黑屏的问题

    记一次物理机安装centos7.5 出现黑屏的问题 一.问题出现 使用物理机安装centos7.5,选择Install CentOS Linux7之后,并没有出现选择语言的界面,而是只出现了一个鼠标, ...

  2. Org mode无法生成LaTeX公式预览图片

    最近需要在Cygwin平台下的Emacs Org mode中生成LaTeX数学公式的预览图片,从而得到图文并貌的笔记与任务管理文档.但当我执行org-toggle-latex-fragment命令后却 ...

  3. java.util.ConcurrentModificationException 记一次坑

    集合在单线程,一个循环内,有添加又删除会出现此异常. 多线程时,在不同的循环操作同一个集合,会出现此异常. 因为,集合长度发生改变时,在迭代器未结束前,迭代器的大小不会发生变化. 1.保证在同一个进程 ...

  4. 禁止Centos7系统yum自动下载更新

    安装Centos7后,系统自动更新状态默认为开启,若禁止系统自动更新需要手动关闭. 1.进入yum目录  [root@localhost ~]$ cd /etc/yum 2.编辑yum-cron.co ...

  5. VIM系统复制粘贴

    1 需求 系统复制粘贴主要是满足下面两个需求. 在多个对象之间复制粘贴 vim窗口与vim窗口之间 外部界面与vim窗口之间 不变复制粘贴.从外部界面复制粘贴到vim窗口时,文本不发生任何变化. 2 ...

  6. Amazon新一代云端关系数据库Aurora

    在2017年5月芝加哥举办的世界顶级数据库会议SIGMOD/PODS上,作为全球最大的公有云服务提供商,Amazon首次系统的总结了新一代云端关系数据库Aurora的设计实现.Aurora是Amazo ...

  7. poj1681 Network

    题目链接 https://cn.vjudge.net/problem/17712/origin Andrew is working as system administrator and is pla ...

  8. Laravel修改验证提示信息为中文

    1.覆盖提示信息: 打开resource/lang/en/validation.php注释掉英文提示信息 $ sudo vim resource/lang/en/validation.php 将下面的 ...

  9. Alpha冲刺——代码规范、冲刺任务与计划

    代码规范 作业描述 课程 软件工程1916|W(福州大学) 团队名称 修!咻咻! 作业要求 项目Alpha冲刺(团队) 团队目标 切实可行的计算机协会维修预约平台 开发工具 Eclipse 团队信息 ...

  10. E - Elevator

    E - Elevatorhttp://codeforces.com/gym/241680/problem/E同余最短路,从0~a-1中每一个i向(i+b)%a连一条权值为b的边,向(i+c)%a连一条 ...