Error message here!

Hide Error message here!

忘记密码?

Error message here!

请输入正确邮箱

Hide Error message here!

密码丢失?请输入您的电子邮件地址。您将收到一个重设密码链接。

Error message here!

返回登录

Close

Redis事务和锁

java石头人 2020-11-08 02:05:00 阅读数:31 评论数:0 点赞数:0 收藏数:0

Redis事务

简介

Redis中的事务是一组命令执行的队列。事务同命令一样都是Redis最小的执行单位,一个事务中的命令要么都一次性执行,要么都不执行。当执行时,一次性按照顺序执行,中间过程不能被干扰

事务的基本操作

开启事务 multi 设置事务的开启,后续的指令都加入到这个队列当中,执行事务

exec 事务的结束,执行所有事务并返回结果。

取消事务 discard 事务定义过程中出现问题,即时取消事务

事务的工作流程

操作过程

没有开启事务,无法获取当前设置数据

另一台客服端设置的是set name yu

开启事务之后,所有步骤都一致

事务设置错误,取消当前事务

事务注意事项

1.如果输入指令有语法错误,整体事务中所有的命令都不会执行

2.如果输入的指令没有语法错误,命令执行错误,正确的命令会执行,运行错误的命令不会被执行。如果在实际编码中,已经执行命令的数据不会回滚,需要自己手动回滚。

应用场景:(控制批量任务执行) 多个客户端有可能同时操作同一组数据,并且该数据一旦被操作修改后,将不适用于继续操作 ,在操作之前锁定要操作的数据,一旦发生变化,终止当前操作。

添加监视锁

watch ,在执行事务结束之前,如果key里面的数据发生了改变,终止事务执行。

unwatch 取消对所有 key 的监视

实操

我在执行exec结束事务之前,在另一个客服端修改了aa的值,发现事务结束获得的值是空。

在事务开启之后,不能监控key,取消监控之后,开启事务,添加数据之后,在另一台客户端修改数据aa,然后结束事务,发现数据没有被更改。

版权声明
本文为[Anthony-bird]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/zzy8080/p/13943251.html