zoukankan      html  css  js  c++  java
  • redis的事务与关系型数据库事务

    1.关系型数据库的事务:要么全部成功,要么全部失败的一组操作(程序运行的最小执行单元);包括:声明式事务,注解式事务(给类或方法注解)

    2.Redis事务:当你开启了事务之后,下面所执行的所有命令,都在排队执行的状态,当你提交时,会按照命令的顺序一次执行

    1 127.0.0.1:6379> multi
    2 OK
    3 127.0.0.1:6379> set name 24
    4 QUEUED(队列,排队的意思,待执行,还没有执行)
    5 127.0.0.1:6379> incr name
    6 QUEUED
    7 127.0.0.1:6379> exec
    8 1) OK
    9 2) (integer) 25

    3.MYSQL事务:

    开启事务:start transaction

    提交事务:commit

    回滚事务:rollback

    4.Redis事务:

    multi:开启

    exec:提交事务(execution的缩写)

    discard:回滚事务(没提交一直是不变的)(就是取消事务,放弃执行事务块内的所有命令)

     1 127.0.0.1:6379> get name
     2 "25"
     3 127.0.0.1:6379> multi
     4 OK
     5 127.0.0.1:6379> incrby name 2
     6 QUEUED
     7 127.0.0.1:6379> incrby name 3
     8 QUEUED
     9 127.0.0.1:6379> discard
    10 OK(因为是回滚事务,所以那些命令都没有执行)
    11 127.0.0.1:6379> get name
    12 "25"(只要没提交事务,都是不变的)

    5.Redis事务执行期间,Redis不会再为其它客户端的请求提供任何服务

    watch:监测事务

    unwatch:取消监测

    1 127.0.0.1:6379> watch name(先监测事务)(连接的客户端一)
    2 OK
    3 127.0.0.1:6379> multi
    4 OK
    5 127.0.0.1:6379> incrby name 2
    6 QUEUED
    7 127.0.0.1:6379> exec
    8 1) (integer) 33
    1 127.0.0.1:6379> watch name(连接的客户端二)
    2 OK
    3 127.0.0.1:6379> multi
    4 OK
    5 127.0.0.1:6379> incrby name 10
    6 QUEUED
    7 127.0.0.1:6379> exec(客户端一先提交了,所以客户端二没有被提供任何服务)
    8 (nil)

    6.在Redis事务中如果有某一条命令执行失败,其后的命令仍然会被继续执行

     1 127.0.0.1:6379> get name
     2 "35"
     3 127.0.0.1:6379> multi
     4 OK
     5 127.0.0.1:6379> incrby name 6
     6 QUEUED
     7 127.0.0.1:6379> incrby name 3
     8 QUEUED
     9 127.0.0.1:6379> incrby name aaa(错误的命令)
    10 QUEUED
    11 127.0.0.1:6379> incrby name 4
    12 QUEUED
    13 127.0.0.1:6379> exec
    14 1) (integer) 41
    15 2) (integer) 44
    16 3) (error) ERR value is not an integer or out of range
    17 4) (integer) 48(之后的仍然执行)
    18 127.0.0.1:6379> 
  • 相关阅读:
    详细深入分析 Java ClassLoader 工作机制
    centos 文件系统权限
    leaflet 实现地图上标记的发散闪烁动画
    GEOJSON 的渲染实例
    【转】多用户同时登陆Windows远程桌面 | 最近升级了win10系统,以前一直用的RDPWrap-1.6版本无法使用,解决方案
    getopt 用法
    安装oracle报:oracle net configuration assistant失败
    【Delphi学习】ADOQuery 用法
    如何为DOS批处理%time%小时的值小于10的时候如何在这个值前加0?
    .bat 中显示出的时间格式问题,如2:36:00,如何让运行脚本显示为02:36:00
  • 原文地址:https://www.cnblogs.com/liujinqq7/p/12386479.html
Copyright © 2011-2022 走看看