zoukankan      html  css  js  c++  java
  • Redis事务

    Redis事务介绍

      【Redis事务,属于简单事务,弱事务,从事务的ACID特性来说】

    • Redis的事物通过 MULTI  、EXEC 、DISCARD 和 WATCH 、UNWATCH 这五个命令来完成的。
    • Redis的单个命令都是原子性的,所以这里需要确保事务性的对象是命令集合。【事务就是操作命令的集合】
    • Redis将命令集合序列化并确保处于同一事物的命令集合连续且不被打断的执行。
    • Redis 不支持回滚操作
      • 不同于数据库,数据库操作成功全成功,操作失败之前成功的操作也作废
      • 举例:
        • multi
        • set a1  a1 
        • lpush a1 1 2 3      【语法没错误,但a1已经赋值类型为list】
        • exec        【error,  但是 set a1 a1 这句是成功的】

    Redis事务命令

      MULTI

             1.用于标记事务块的开始

             2.Redis会将后续的命令逐个放入队列中,然后使用EXEC命令原子化地执行整个命令序列

      EXEC 

       执行队列命令,然后结束事务

      DISCARD

        清除队列内容,也就是退出事务了

     

       WATCH 

       可以对某一个或多个key进行监控,如果监控的key的数据发生变化,那么事务就不执行,否则事务就可以正常执行

               啥意思: 

          1、就是在当前(要进行事务)的客户端    先watch key1    

          2、multi   (开启事务)

          3、set  key2  val2    (这时候用另一个客户端red-cli 对 set key1  val 修改)

          4、exec  (提交事务,返回nil  失败)     

               注意:是在要进行事务的客户端进行  watch , 其他客户端red-cli 进行 watch不会失败的nil

      UNWATCH

       解除对key的监控

      Redis事务为不支持回滚 (为什么呢)

        1、大多数事务失败是因为语法错误或者类型错误,这两种错误,在开发阶段都是可以预见的。

        2、Redis为了性能方面就忽略了事务回滚。

  • 相关阅读:
    #575. 「LibreOJ NOI Round #2」不等关系
    P4494 [HAOI2018]反色游戏
    P6378 [PA2010] Riddle
    子集卷积
    躯壳
    C++11、14、17里的lambda表达式简介
    数据结构与算法复习——7、斐波那契堆和配对堆
    数据结构与算法复习——6、二项队列及其分析
    数据结构与算法复习——5、摊还分析入门
    高等代数(二)预习——4、唯一因式分解定理
  • 原文地址:https://www.cnblogs.com/codelives/p/13589771.html
Copyright © 2011-2022 走看看