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

    事务命令:
    • multi
      • 开启事务,此时输入的命令会入队FIFO。
    • exec
      • 依次执行队列中的命令,即使遇到执行错误的命令,也不会影响其他命令,redis没有事务回滚机制。
    • discard
      • 放弃事务
    • watch
      • CAS乐观锁,用法是在multi命令之前执行,监控某个key值,如果在命令输入完成后执行exec命令的过程中,此key被其他客户端改变,则事务拒绝执行。(REDIS_DIRTY_CAS标示被打开,exec执行前会判断此标示,如果被打开则拒绝执行)
    事务的ACID性质:
    • 原子性(Atomicity):当前事务的所有命令都会被执行,即使是其中一个出现报错,剩余命令也会继续执行完,要么执行完,要么不执行,所以具有原子性,redis事务不具有回滚性,因为作者觉得出现单个命令出现问题是编码水平的问题,所以没必要为redis设计回滚机制。
    • 一致性(Consistency):
      • 一致指的是数据符合数据库本身的定义和要求,没有包含非法或者无效的错误数据。
        1. 入队错误:redis就会拒绝执行,所以不会对一致性有影响。
        2. 执行错误:执行错误,redis在执行过程中会识别异常,数据不会被修改,所以不会影响一致性。
        3. 服务器停机:redis重启后会自动去寻找可用的RDB或者AOF来恢复数据,此时数据肯定是一致的,否则就会恢复一个空数据库,所以数据库始终是一致的。
    • 隔离性(Isolation):
      • 隔离性指的是数据库中有多个事务执行时也不会相互影响。
        • redis是单线程,串行处理。
        • 服务器保证不会在事务执行中进行中断。
      • 综上:具有隔离性
    • 持久性(Durability):
      • 当且仅当,redis运行在AOF模式的持久化,且appendfsync选项为always,且no-appendfsync-on-rewrite处于关闭状态,此时才具有持久性。 
  • 相关阅读:
    HDU_5372 树状数组 (2015多校第7场1004)
    《 字典树模板_递归 》
    《神、上帝以及老天爷》
    《Crazy tea party》
    UVA_ Overflow
    UVA_If We Were a Child Again
    UVA_Product
    UVA_Integer Inquiry
    你也可以屌到爆的这样敲代码当黑客!
    大数相加_原创
  • 原文地址:https://www.cnblogs.com/indecy/p/12240705.html
Copyright © 2011-2022 走看看