Redis事务与管道

一. 管道pipeline

使用 pipelined()获取管道,后续把命令缓存下来

注:管道方式,最后必须要执行运行方法也就是syncAndReturnAll类似的方法,否则不会执行

二. 事务tx

和管道有点类似,都是缓存命令,然后在执行方法一起执行

1.开启multi(),中间执行命令,在执行exec()方法时,一起执行.如果前面有监视也就是watch();如果监视的值被该变,那么下面的语句不会执行.

2.不开启multi(),执行命令,不管有没有监视都会执行完毕.

流程:先开启事务,获得事务对象tx,在通过事务对象tx进行命令缓存,最后进行exec方法,如果为null说明没有执行.

流程图:

三. 事务和管道的区别

事务与pipeline都是不支持回滚;中间命令出现错误,不会影响前面已经执行成功的命令,也不会中断后面的命令继续执行; 事务可以实现原子性和隔离性.管道执行不管中间有没有出错命令都会全部执行一遍,事务有一个出错,后面命令不会执行.

注:redis集群时,不支持事务(可以考虑lua脚本)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值