• 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

      

     

     

      

  • 相关阅读:
    Yii笔记之filter用法 j神
    [转载]C# 剪切板编程 Clipboard
    [转载]3521工程
    [原创]获取委托链方式,用于多播委托。
    [转载]C#为应用程序注册快捷键 Ctrl+C Ctrl+V
    【原创】序列化/反序列化
    【原创】WinForm操作EXCEL(第三方插件NPOI)
    【原创】MyXls导出Excel (适用于Winform/WebForm)
    【原创】特性与反射(一)
    【原创】特性与反射(二)
  • 原文地址:https://www.cnblogs.com/ycg-blog/p/12680496.html
Copyright © 2020-2023  润新知