美文网首页
redis事务

redis事务

作者: SetsunaHao | 来源:发表于2018-10-11 14:26 被阅读0次

    什么是事务?
    很多件事情按顺序一起执行,都成功了,就算完成了事务,否则就恢复如初,像没有执行过一样。

    SET A 1000
    SET B 2000
    
    DECRBY A 100 (step 1)
    INCRBY B 100 (step 2)
    
    如果step1政策执行,step2发生异常那么
    A 结果为 900
    B 结果为 1000
    

    自认为正确的解决方式

    MULTI 
    DECRBY A 100
    INCRBY B 100
    EXEC
    

    然而实际上

    MUlTI
    SET a 100
    INCRY b 1.22 (此行会报错)
    SET a 200
    EXEC
    
    SET a 200 依然会被执行
    
    MULTI 开始一个事务,将事务加入执行队列
    EXEC 执行事务
    

    Redis的事务并不是原子的,它并不支持回滚
    使用DISCARD可以取消事务

    MULTI
    SET a 100
    DISCARD
    

    watch指令:

    命令用于监视一个(或多个) key ,
    如果在事务执行之前这个(或这些) key 被其他命令所改动,
    那么事务将被打断
    
    SET a 1
    WATCH a 
    SET a 2
    MULTI
    SET a 3
    EXEC
    GET a
    
    结果 : a = 2
    因为之前执行了watch在后面的事务中,a的值将保持2,
    使用UNWATCH可取消监控
    

    相关文章

      网友评论

          本文标题:redis事务

          本文链接:https://www.haomeiwen.com/subject/qysbaftx.html