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

      

     

     

      

  • 相关阅读:
    以太网的寻址
    IP地址简介
    服务器控件与Html控件属性值的解释差异
    The Live Hacking CD
    德国SNS交友/视频网站Poppen.de的技术架构分享
    Forensic Log Parsing with Microsoft's LogParser
    The Flame: Questions and Answers
    hping
    WIN7与XP网络共享与访问
    Win7无法访问NAS或Samba解决之道
  • 原文地址:https://www.cnblogs.com/ycg-blog/p/12680496.html
Copyright © 2011-2022 走看看