什么是Redis的事务?
redis事务就是一个命令执行的队列。将一系列预定义命令包装成一个整体。当执行时,一次性按照添加顺序依次执行,中间不会被打断或者干扰。
事务的基本操作
开启事务 设定事务的开启位置,此指令执行后,后续的所有指令均加入事务中
multi
执行事务 设定事务的结束位置,同时执行事务。与multi成对出现,成对使用
exec
取消事务 终止当前事务的定义,发生在mutil之后,exec之前
discard
代码演示
窗口1开启事务并对name重新赋值
窗口2查询name值并name值没有发生改变
窗口1exec执行事务,窗口2查值发生改变
事务的工作流程
事务注意事项
Redis的锁
锁的基本操作
对key添加监视锁,在执行exec前如果key发生了变化,终止事物执行
watch key1 {key2......}
取消所有key的监视
unwatch
分布式锁
设置分布式锁
setnx lock value
删除分布式锁
del lock
应用场景
假设有十件商品参与秒杀,窗口1设置了分布式锁
窗口2会因为窗口1占用lock锁,无法获取lock锁
根据lock锁的特性,我们可以解决超卖问题
分布式锁的死锁问题
代码演示
窗口1分布式锁设置10秒失效
十秒内窗口2获取不到分布式锁,十秒后获取到分布式锁