redis事务详解和例子

1、事务开始命令:MULTI          ;标记一个事务的开始,事务块的多条命令会顺序入队列,这个队列称为事务块,最后由EXEC命令原子执行。

127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> set abc 1234
QUEUED
127.0.0.1:6379> set def 456
QUEUED
127.0.0.1:6379> set ijk 900
QUEUED
127.0.0.1:6379> exec
1) OK
2) OK
3) OK
127.0.0.1:6379> keys *
1) "ijk"
2) "def"
3) "abc"


2、事务执行命令:EXEC  ;执行事务队列里面的命令; 如果某个key在watch命令的监视下,且事务块中有和这些key相关的命令,那么在MUTIL到EXEC期间这些key没有被其他命令改动的情况下执行成功并生效,否则被打断,打断返回nil

打断的情况:

客户端1执行:

127.0.0.1:6379> WATCH lock1 lock2
OK
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> set aaaa  woaini
QUEUED
127.0.0.1:6379> set bbbb defadsf
QUEUED
127.0.0.1:6379> set lock1 xiaomingxiaoming
QUEUED
127.0.0.1:6379> set lock2 xiaohua
QUEUED
127.0.0.1:6379> EXEC
(nil)


当客户端1执行到set lock2 xiaohua的时候,客户端2:

127.0.0.1:6379> set lock1 xiaodongxiaodong
OK
127.0.0.1:6379> 

修改了lock1的内容,那么这个事务就会被打断,返回nil,当然事务前的也没有执行成功了:

127.0.0.1:6379> WATCH lock1 lock2
OK
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> set aaaa  woaini
QUEUED
127.0.0.1:6379> set bbbb defadsf
QUEUED
127.0.0.1:6379> set lock1 xiaomingxiaoming
QUEUED
127.0.0.1:6379> set lock2 xiaohua
QUEUED
127.0.0.1:6379> EXEC
(nil)
127.0.0.1:6379> get aaaa
(nil)
127.0.0.1:6379> get bbbb
(nil)


3、监视一个或者多个key:WATCH key [key ...]          ;如果事务执行前这些key被其他的命令改动,那么事务会被打断。

4、取消WATCH命令对所有的key的监视:UNWATCH              ;如果已经执行了EXEC或者DISCARD,返回值总是ok

127.0.0.1:6379> WATCH lock
OK
127.0.0.1:6379> UNWATCH
OK


4、取消事务,放弃执行事务块里面的所有命令:DISCARD

如果正在用WATCH监控某个key,那么取消监视等同于执行了命令UNWATCH。

127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> set woaini 1314
QUEUED
127.0.0.1:6379> set xiaoming xiaofang
QUEUED
127.0.0.1:6379> DISCARD
OK










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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

美了美了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值