redis事务

redis事务简介

redis事务的本质就是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化,在事务执行过程中,会按照顺序串行化。

redis事务没有隔离级别的概念

批量操作在发送exec命令前被放入队列缓存,并不会实际执行。

redis不保证原子性

redis中,单条命令是原子的,但是事务不是原子的(命令的语法错误可以保留原值,比如set k1 v1,set k2 v2,写成sets,这种错误可以回滚,如果lpush k2 22这种错误可能会部分执行,跳过一些错误 ),且没有回滚,事务中任意命令执行失败,其余的命令仍会被执行。

例1:

set k1 v1
set k2 v2 
multi
set k1 11
sets k2 22(这种语法错误会回滚,命令输入后会提示error,语法错误命令入队前就会检测出来)

例2:

set k1 v1
set k2 v2 
multi
set k1 11
lpush k2 22(这种会跳过部分错误,部分执行,命令输入后,提示queue)

一个事务从开始到执行会经历会经历三个阶段:

第一阶段:开始事务  MULTI开启事务

第二阶段:命令入列 

第三阶段:执行命令 EXEC

DISCARD取消事务,放弃执行块中的所有命令

WATCH监视一个或多个key,如果事务在执行前,这个key(或多个key)被其他命令修改,则事务被中断,不会执行事务中任何命令。

UNWATCH取消watch对所有key的监视

总结:redis的事务,就是将一堆命令打包,然后按照顺序执行,没有隔离性,不保证原子性,之所以redis提供这种简易事务,也是为了高并发下性能的考虑,不支持事务回滚。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值