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


    一、事务控制

    1、简单事务控制

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

    127.0.0.1:6379> multi
    OK
    127.0.0.1:6379> set age 10
    QUEUED
    127.0.0.1:6379> set age 20
    QUEUED
    127.0.0.1:6379> exec
    1) OK
    2) OK
    127.0.0.1:6379> get age
    "20"

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

    127.0.0.1:6379> multi
    OK
    127.0.0.1:6379> set age 30
    QUEUED
    127.0.0.1:6379> set age 40
    QUEUED
    127.0.0.1:6379> discard
    OK
    127.0.0.1:6379> get age
    "20"

    2、乐观锁复杂事务控制

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

    127.0.0.1:6379> multi
    OK
    127.0.0.1:6379> set age 14
    QUEUED
    127.0.0.1:6379> set age 16
    QUEUED
    # 此时age已经改变
    127.0.0.1:6379> exec
    1) OK
    2) OK
    127.0.0.1:6379> get age
    "16"

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

    127.0.0.1:6379> watch age
    OK
    127.0.0.1:6379> multi
    OK
    127.0.0.1:6379> set age 2
    QUEUED
    127.0.0.1:6379> set age 5
    QUEUED
    # 此时age已经改变
    127.0.0.1:6379> exec
    (nil)

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

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

  • 相关阅读:
    Objective-C 学习记录--toches、Motion/Size/Rect/Point/CGFloat/protocol
    Objective-C 学习记录6--dictionary
    Objc基础学习记录5
    第四篇:web之前端之jquery
    第三篇:web之前端之JavaScript基础
    第二篇:web之前端之css
    第一篇:web之前端之html
    第三篇:杂项之年终总结
    第二篇:杂项之图像处理pillow
    第一篇:杂项之pymysql连接池
  • 原文地址:https://www.cnblogs.com/cdinc/p/6139694.html
Copyright © 2020-2023  润新知