Redis事务
简介
Redis中的事务是一组命令执行的队列。事务同命令一样都是Redis最小的执行单位,一个事务中的命令要么都一次性执行,要么都不执行。当执行时,一次性按照顺序执行,中间过程不能被干扰
事务的基本操作
开启事务 multi
设置事务的开启,后续的指令都加入到这个队列当中,执行事务
exec
事务的结束,执行所有事务并返回结果。
取消事务 discard
事务定义过程中出现问题,即时取消事务
事务的工作流程
操作过程
没有开启事务,无法获取当前设置数据
另一台客服端设置的是set name yu
开启事务之后,所有步骤都一致
事务设置错误,取消当前事务
事务注意事项
1.如果输入指令有语法错误,整体事务中所有的命令都不会执行
2.如果输入的指令没有语法错误,命令执行错误,正确的命令会执行,运行错误的命令不会被执行。如果在实际编码中,已经执行命令的数据不会回滚,需要自己手动回滚。
锁
应用场景:(控制批量任务执行) 多个客户端有可能同时操作同一组数据,并且该数据一旦被操作修改后,将不适用于继续操作 ,在操作之前锁定要操作的数据,一旦发生变化,终止当前操作。
添加监视锁
watch
,在执行事务结束之前,如果key里面的数据发生了改变,终止事务执行。
unwatch
取消对所有 key 的监视
实操
我在执行exec结束事务之前,在另一个客服端修改了aa的值,发现事务结束获得的值是空。
在事务开启之后,不能监控key,取消监控之后,开启事务,添加数据之后,在另一台客户端修改数据aa,然后结束事务,发现数据没有被更改。