redsync源码解读
-
setnx的作用
a. 将获取和设置值变成原子性的操作 -
如果我的服务挂掉了-死锁
a. 设置过期时间
b. 如果你设置了过期时间,那么如果过期时间到了我的业务逻辑没有执行完怎么办?
**1、过期之前刷新一下
**2、需要自己去启动协程完成延时的工作:延时的接口可能会带来负面影响,如果其中某一个服务hung住了,2s就能执行完,但是你hung住那么你就会益智区申请延长锁,导致别人获取不到锁,这很要命 -
分布锁需要解决的问题-lux脚本去做
a. 互斥性-setnx
b. 死锁
c. 安全性:锁只能被持有该锁的用户删除,不能被其他用户删除,当时设置的value值是多少只有但是的g才能知道,再删除的时候取出redis中的值和当前自己保存下来的值对比一下 -
即使你这样实现了分布式但是还是会有问题-redlock

浙公网安备 33010602011771号