• Redis事务


    1.MySQL事务

    #成功的事务
    begin;
    sql1;
    sql2;
    ...
    commit;
    
    #失败的事务
    begin;
    sql1;
    sql2;
    ...
    rollback;
    

    2.redis事务命令

    #1.开启事务
    MULTI
    
    #2.结束事务(执行所有事务块内的命令)
    EXEC
    
    #3.取消事务(放弃执行事务块内的所有命令)
    DISCARD
    
    #4.监视一个(或多个) key,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。
    WATCH
    
    #5.取消监控
    UNWATCH
    

    3.事务的示例

    #使用事务执行
    127.0.0.1:6379> MULTI
    OK
    127.0.0.1:6379> set k100 v100
    QUEUED
    127.0.0.1:6379> set k200 v200
    QUEUED
    127.0.0.1:6379> get k200
    QUEUED
    127.0.0.1:6379> EXEC
    1) OK
    2) OK
    3) "v200"
    
    #事务取消
    127.0.0.1:6379> MULTI
    OK
    127.0.0.1:6379> set k1 v1
    QUEUED
    127.0.0.1:6379> set k2 v2
    QUEUED
    127.0.0.1:6379> get k1
    QUEUED
    127.0.0.1:6379> DISCARD
    OK
    127.0.0.1:6379> keys *
    (empty list or set)
    
    #监控一个key
    127.0.0.1:6379> WATCH k1
    OK
    127.0.0.1:6379> MULTI
    OK
    127.0.0.1:6379> set k1 v1000000
    QUEUED
    
    #另一个窗口修改k1
    127.0.0.1:6379> set k1 00000
    OK
    
    #回到第一个窗口提交事务
    127.0.0.1:6379> EXEC
    (nil)
    127.0.0.1:6379> get k1
    "00000"
    

    4.注意

    1.redis只支持乐观锁
    2.事务在不使用watch监控时,谁后提交谁为准
    3.事务在使用watch监控时,谁先提交谁为准
    4.watch只监控一次事务并且是当前连接的事务
    
  • 相关阅读:
    2016-10-17: source insight插件
    Reactor模式通俗解释
    2016-09-19: linux后台运行
    2016-08-16: 检测函数是否存在的C++模板
    2016-08-16: copy-and-swap
    2016-08-15:从YUV420P中提取指定大小区域
    2016-08-15: C++ traits
    2016-08-05:samba服务器配置
    LINQ 根据指定属性名称对序列进行排序
    Resharper
  • 原文地址:https://www.cnblogs.com/Applogize/p/13449097.html
Copyright © 2020-2023  润新知