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

    redis事务的一些概念:

    • 基本概念:redis事务就是一致性,顺序性,排他性地执行一个队列中的一系列命令,
    • 这种一次性执行多个命令等待所有回复的做法叫做“流水线”,可以减少客户端与服务端的通信次数,提高效率,流水线可以分为事务性和非事务性,用pipeline实现一次执行多个不同命令
    • redis事务没有隔离级别:批量操作在发送 EXEC 命令前被放入队列缓存,并不会被实际执行
    • redis事务不保证原子性,因为一个事务中某条命令出错,其他命令仍然执行
    • redis事务执行步骤:开始事务,命令入队,执行事务
    • redis不支持回滚:只有当发生语法错误,Redis命令才会执行失败, 但比如对keys赋予了一个类型错误的数据,这些在开发过程中就可以解决。几乎不会出现在生产环境

    redis事务相关命令:

    • watch key1 key2 ... : 监视一或多个key,如果在事务执行之前,被监视的key被其他命令改动,则事务被打断 ( 类似乐观锁 )
    • multi : 开启事务
    • exec : 执行所有事务块的命令 ( 一旦执行exec后,之前加的监控锁都会被取消掉 )
    • discard : 是在multi执行之后,exec之前,也就是命令入队之后,放弃事务块中的所有命令,对连接重置
    • unwatch : 取消watch对所有key的监控,是在watch之后multi执行之前,事务命令执行之前对连接进行重置

    redis事务语法:

    redis 127.0.0.1:6379> WATCH xxx(可选)
    OK
    在事务执行期间,如果watch监控的值发生了改变,执行事务失败
    redis 127.0.0.1:6379> UNWATCH(在WATCH和MULTI之间执行,对连接重置)
    OK
    redis 127.0.0.1:6379> MULTI
    OK
    
    redis 127.0.0.1:6379> XXX命令
    QUEUED
    中间的XXX命令如果是非语法性错误,其他语句会正常执行,如果是语法性错误,不会正常执行
    redis 127.0.0.1:6379> XXX命令 
    QUEUED
    redis 127.0.0.1:6379> DISCARD(在MULTI和EXEC之间执行,对连接重置)
    OK

    redis 127.0.0.1:6379> EXEC

      

     

     

      

  • 相关阅读:
    SqlServer 查看被锁的表和解除被锁的表
    Windows Server 2012 R2 或 2016 无法安装 .Net 3.5.1
    请求文件下载URL过长处理
    T4语法
    windows下 安装 rabbitMQ 及操作常用命令
    ubuntu系统启动qtceator时提示:Qt5.5.1/Tools/QtCreator/lib/qtcreator/plugins/libHelp.so: 无法加载库
    升级到VS2013常见问题
    Windowns 无法启动 Office Software Protection Platform 服务,系统找不到指定的文件
    SVN clean失败解决方法
    使用PostSharp在.NET平台上实现AOP
  • 原文地址:https://www.cnblogs.com/ycg-blog/p/12680496.html
Copyright © 2011-2022 走看看