事务与WATCH命令

事务

    redis支持事务,比如三个KEY的同时修改可以在同一个事务中执行。但是redis的事务与我们接触的关系型数据库事务不一样。

    1.事务中命令包含语法错误,整个事务所有命令都不执行

    2.事务中命令没有语法错误,但执行时有命令失败,不影响事务中其他命令执行

    3.事务不支持回滚

    针对2、3两个特点,一旦发生运行时错误,需要开发者自己收拾烂摊子,在开发的时候就做好规划避免出现运行时错误。

    事务命令:

    multi

    set key1 value

    set key2 value

    set key3 value

    exec

WATCH

    使用watch命令之后,如果修改了key(包括删除),redis会阻止下一次事务的修改,这一点和zookeeper的监听很类似,都是单次设置单次使用,一旦触发必须重新设置watch

    举例:

    client1:

    145827_50Rl_3049601.png

    client2:

    145900_ZJce_3049601.png

    可以看到client1事务内的命令没有执行成功,说明watch起了作用

    所以针对这种情况,程序需要根据返回值重新调用

    注:事务中修改的key只要其中一个因为watch执行失败,不论其他是否设置了watch,则全部失败。

转载于:https://my.oschina.net/u/3049601/blog/1329888

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值