从零到一编码实现Redis分布式锁
来源:用户投稿
我要投稿
作者:龙成创业
时间:2022-01-21 17:13
要自己能理解透就跟着下面的思路来自己操作一下,如下!
使用场景和选型
分布式多节点的部署方式,使得共享变量有可能被同时操作,遇到有数据一致性要求的情况,就需要采取全局锁定的措施来保障并发操作下的一致性要求,如,库存扣减操作、同一个商品的上下架和更新操作等等。
常见的,分布式锁采用Zookeeper和Redis来实现。怎么取舍呢?
zookeeper redis
加锁原理 创建节点,节点已存在时创建失败 插入数据,数据已存在则设置失败
过期保护 节点类型为临时节点,断连删除 设置过期时间,到期删除
优点 在加锁失败时,zk的注册通知更优雅 速度快,性能高
缺点 只有leader负责写,然后通知flower,性能较差 抢锁失败时,需要自旋循环尝试
生产环境下,性能往往被优先考虑,相比较各自的优缺点,综合考虑,我们一般更倾向于redis。
从0到1 实现分布式锁
step1: 加锁 和 解锁的基础能力构建
Jedis.set(key, value, params)