[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-52s3egvf-1661511029228)(en-resource://database/5237:1)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZNWo2Plu-1661511029229)(en-resource://database/5239:1)]
乱入的小朋友
收银员查数的过程被小朋友打乱了
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uRv2u1oq-1661511029229)(en-resource://database/5241:1)]
解决办法:让她在安静的环境下做就行了。
什么是事务
【问题】Redis执行过程中,多条连续执行的指令被干扰,打断,插队
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-arVtn6Wl-1661511029230)(en-resource://database/5243:1)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9zf1CzxT-1661511029230)(en-resource://database/5245:1)]
这个问题当然要解决,就依赖事务。
Redis事务就是一个命令执行的队列,将一系列预定义命令包装成一个整体(一个队列)。当执行时,一次性按照添加顺序依次执行,中间不会被打断或者干扰。
事务的边界
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GKwdsDKy-1661511029230)(en-resource://database/5247:1)]
事务的基本操作
开启事务:multi
作用
执行事务:exec
作用
注意
(已经常见的虚拟机文件是以.vmx结尾)
演示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i7C5QQIw-1661511029231)(en-resource://database/5249:1)]
【疑问】事务定义过程中发现出了问题,怎么办?
set–>multi–>set–>exec–>discard
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tnic5yV2-1661511029232)(en-resource://database/5255:1)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FH6PITRO-1661511029232)(en-resource://database/5257:1)]
语法错误
处理错误
演示
基于特定条件的事务执行——锁
业务场景
天猫双十一,热卖过程中,对已经售罄的货物追加补货,4个业务员都有权限进行补货。补货的操作可能是一系列的操作,牵扯到多个连续操作,如何保障不会重复操作?
业务分析
解决方案
对key添加监视锁,在执行exec前如果key发生了变化,终止事务的执行
取消对所有key的监视
演示
取消事务,放弃执行事务块内的所有命令
监控name
tips 18:
redis应用基于状态控制的批量任务执行
基于特定条件的事务执行1
业务场景
天猫双11热卖过程中,对已经售罄的货物追加补货,且补货完成。客户购买热情高涨,3秒内将所有的商品购买完毕。本次补货已经将库存全部清空,如何避免最后一件商品不被多人购买?【超卖问题】
业务分析
解决方案
注意:上述解决方案是一种设计概念,依赖规范保障,具有风险性。
tips 19:
redis应用基于分布式锁对应的场景控制
基于特定条件的事务执行2
业务场景
依赖分布式锁的机制,某个用户操作时对应客户端宕机,且此时已经获取到锁。如何解决?(宕机前加锁,宕机后锁还在,此时求排队的人心理阴影)所以得给锁加个时效,也就是说你这个锁只能在时效内有效。那么你在厕所里睡觉,它的门还能自己给开了(不会?砸锁行不,不管你尴尬否))
业务分析
解决方案
使用expire 为锁key添加时间限定,到时不释放,则放弃锁(锁时效)(其实就是商场内的寄存空间/杜绝占着茅坑不拉屎的行为)
演示

——此文档为学习笔记!