一、事务控制

1、简单事务控制

  redis可以使用mult命令将之后的命令都存放在队列中,只有使用exec命令时才全部执行。

  1. 127.0.0.1:6379> multi
  2. OK
  3. 127.0.0.1:6379> set age 10
  4. QUEUED
  5. 127.0.0.1:6379> set age 20
  6. QUEUED
  7. 127.0.0.1:6379> exec
  8. 1) OK
  9. 2) OK
  10. 127.0.0.1:6379> get age
  11. ""

  如果我们打过几条命令发现有错,可以使用discard命令来进行回滚操作。

  1. 127.0.0.1:6379> multi
  2. OK
  3. 127.0.0.1:6379> set age 30
  4. QUEUED
  5. 127.0.0.1:6379> set age 40
  6. QUEUED
  7. 127.0.0.1:6379> discard
  8. OK
  9. 127.0.0.1:6379> get age
  10. ""

2、乐观锁复杂事务控制

  如果我们在事务控制的时候,我们想要改变的数据已经被改变了,这该怎么办呢?

  1. 127.0.0.1:6379> multi
  2. OK
  3. 127.0.0.1:6379> set age 14
  4. QUEUED
  5. 127.0.0.1:6379> set age 16
  6. QUEUED
  7. # 此时age已经改变
  8. 127.0.0.1:6379> exec
  9. 1) OK
  10. 2) OK
  11. 127.0.0.1:6379> get age
  12. ""

  可以看到,最后age还是进行了改变,如果我们想要不改变已经变更的数据,我们可以使用redis的乐观锁。

  1. 127.0.0.1:6379> watch age
  2. OK
  3. 127.0.0.1:6379> multi
  4. OK
  5. 127.0.0.1:6379> set age 2
  6. QUEUED
  7. 127.0.0.1:6379> set age 5
  8. QUEUED
  9. # 此时age已经改变
  10. 127.0.0.1:6379> exec
  11. (nil)

  可以看到,最终数据没有更改成功。

  watch命令会监视给定的key,如果当exec时监视的key已经从watch之后发生了变化,则事务会失败。watch也可以监视多个key,如果连接断开,或者使用诸如exec、discard、unwatch等命令都会清除连接中的所有监视。

Redis学习笔记-事务控制篇(Centos7)的更多相关文章

  1. Redis学习笔记-常用命令篇(Centos7)

    redis提供了丰富的命令,这些命令可以在linux终端使用.在各类语言中,这些命令都有对应的方法. 一.键值相关 1.keys 返回满足给定pattern的所有key 127.0.0.1:6379& ...

  2. Redis学习笔记-数据操作篇(Centos7)

    一.基本操作 1.插入数据 127.0.0.1:6379> set name cos1eqlg0 OK 这样就在redis中设置了一个key-value键值对 2.查询数据 127.0.0.1: ...

  3. Redis学习笔记之基础篇

    Redis是一款开源的日志型key-value数据库,目前主要用作缓存服务器使用. Redis官方并没有提供windows版本的服务器,不过微软官方开发了基于Windows的Redis服务器Micro ...

  4. redis学习笔记(详细)——高级篇

    redis学习笔记(详细)--初级篇 redis学习笔记(详细)--高级篇 redis配置文件介绍 linux环境下配置大于编程 redis 的配置文件位于 Redis 安装目录下,文件名为 redi ...

  5. Redis学习笔记(1)——Redis简介

    一.Redis是什么? Remote Dictionary Server(Redis) 是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value ...

  6. Spring源码学习笔记12——总结篇,IOC,Bean的生命周期,三大扩展点

    Spring源码学习笔记12--总结篇,IOC,Bean的生命周期,三大扩展点 参考了Spring 官网文档 https://docs.spring.io/spring-framework/docs/ ...

  7. Redis学习笔记~目录

    回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...

  8. Redis学习笔记之ABC

    Redis学习笔记之ABC Redis命令速查 官方帮助文档 中文版本1 中文版本2(反应速度比较慢) 基本操作 字符串操作 set key value get key 哈希 HMSET user:1 ...

  9. (转)redis 学习笔记(1)-编译、启动、停止

    redis 学习笔记(1)-编译.启动.停止   一.下载.编译 redis是以源码方式发行的,先下载源码,然后在linux下编译 1.1 http://www.redis.io/download 先 ...

随机推荐

  1. vs2010中如何编写C语言程序

    File->New->Project 在打开的New Project对话框中最左侧一栏中选择Visual C++下面的CLR,之后在其右侧的区域中选择CLR Empty Applicati ...

  2. eclipse如何设置编译后target目录不提交svn服务器

    eclipse设置 windows ->prefrences->team->Ignored Resource 点击Add Pattern  输入    */target/*    等 ...

  3. Android5.0免Root截屏,录屏

    http://blog.csdn.net/wds1181977/article/details/52174840 MediaProjection介绍 MediaProjection可以用来捕捉屏幕,具 ...

  4. postman--实现接口自动化测试

    postman使用 开发中经常用postman来测试接口,一个简单的注册接口用postman测试: 接口正常工作只是最基本的要求,经常要评估接口性能,进行压力测试. postman进行简单压力测试 下 ...

  5. Python面试题目之列表去重并维持原来顺序

    题目: 列表去掉重复元素,并保持原来的排序 方法一: # 待处理的列表 L1 = [111,44,55,33,22,11] # 利用集合set的属性,去重 s1 = set(L1) # 把集合转化为列 ...

  6. 20145329 《网络对抗技术》 逆向及Bof基础实验

    1.实验内容 本次实践的对象是一个名为20145329的linux可执行文件.该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串.该程序同时包含另一个代码片段,ge ...

  7. 课堂练习——Hash 20162305

    课堂练习--Hash 20162305 课堂练习要求 利用除留余数法为下列关键字集合的存储设计hash函数,并画出分别用开放寻址法和拉链法解决冲突得到的空间存储状态(散列因子取0.75) 关键字集合: ...

  8. android驱动学习---led实验

    ======================== 驱动: 内核:android-kernel 2.6.36  (必须对应你的板子上内核,不然会出现insmod错误) 目的:通过android应用层用户 ...

  9. LM358电流检测电路

    ----------------------------------------------------------------------------------------- ---------- ...

  10. UVa 557 汉堡

    https://vjudge.net/problem/UVA-557 题意: 有n个牛肉堡和n个鸡肉堡给2n个孩子吃.每个孩子在吃之前都要抛硬币,正面吃牛肉堡,反面吃鸡肉堡.如果剩下的所有汉堡都一样, ...