工作中用到了分布式锁,特意研究了下各种场景和实现方案。
为什么用分布式锁?
其实提到锁这个东西,我理解它有点类似现实生活中的锁。
举个例子:比如门锁,现实生活中我们为什么用门锁,因为防止更多人进去。...(比如库存等)这个时候我们要加上锁,其实可以理解成钥匙,有锁钥匙的人才能走下面的流程
应用场景:
1.最常见扣减库存
2.缓存击穿/缓存雪崩(也可以采用分布式锁)
3.在高并发的场景下,阻止流量打到后边等等...2.释放锁时,删除数据
优点:容易理解,实现简单
缺点:性能比较差,适合并发不高的场景
2.基于redis setnx实现分布式锁
1.主要设置锁的超时时间,避免死锁
2.如果锁过期了事情没干完-使用多线程...缺点:代码通过Watcher机制实现,实现相对复杂
上面介绍了目前主流做分布式锁的方案,咱们在做技术选项和对比的时候.根据实际应用场景选择合适的方案把。...其实用的比较多直接单独用一台redis来做分布式锁,其实已满足大部分场景了。
其实每一种实现方案都是有它的优缺点的,我们在知道它的优缺点以后再进行选择。