对于单机的应用来说,可以直接使用synchronized关键字或着Lock工具类来加锁;但是对于分布式应用我们需要凭借一些工具来实现加锁;

加锁流程通俗来解释就是:
1. 占坑
2. 执行逻辑
3. 填坑
我们可以使用redis来完成占坑这个操作;
基础版加锁
//通过占坑的方式获取锁
boolean lock = redis.setIfAbsent(key, value);
if (lock) {
//业务逻辑
//填坑
redis.delete(lock)
}
如果获取锁之后,应用宕机导致未释放锁,会造成死锁
获取锁的时候需要给锁添加过期时间
redis.setIfAbsent(key, value);
redis.expire(key, value);
如果在获取锁的时候,意外导致过期时间没设置成功,也会导致死锁
通过lua脚本将set、expire两个操作合并成原子操作,确保过期时间能设置成功
如果锁过期了,但是当前任务未执行结束,此时锁就可能被其他应用获取到,并更新锁的key。如果此时当前任务执行结束去释放锁,会将别人的锁给释放掉
释放锁:
- 判断当前锁的值和自己上锁的值是不是吻合的;
- 如果不吻合则不释放;
- 如果值吻合,就删除key释放锁;
在释放锁的时候,如果判断key值吻合,但此时key过期了,锁被别人获取到,此时再删除key,就是释放了别人的锁了
要保证查询、判断、删除逻辑为原子操作,使用lua脚本
如何保证锁的可重入
如果在递归方法有加锁逻辑或其他调用有
lock.lock();
//逻辑
lock.lock();
//逻辑
lock.unLock();
lock.unLock();
要实现可重入锁,可以在锁的value值上做文章,在value值上记录重入次数,每次重入次数加一,每次unlock次数减一,直至为零,则删除key 释放锁;
key:
{
"value":1
}
如果业务逻辑时间过长,锁提前过期释放了怎么办
设置长过期时间的弊端就是,如果应用宕机之后锁需要经历较长的时间才能被别人获取,影响业务;
如果是有续期功能的话,如果宕机,锁也会被较短的过期时间给刷掉,是种更优美的解决方式;
如redission中获取锁后,会启动一个watchDog线程来监控当前线程是否还持有锁,如果还持有锁,就给他续期
具体操作为: 每十秒检查一下是否持有锁,如果锁未释放就重置一下锁的过期时间,实现续期;
如果应用在redis的master节点上获取锁成功,此时该master节点宕机,且锁数据还未同步到slave节点上,主从切换之后,其他应用趁机也获取了分布式锁
redLock
主从结构不是会有问题吗,redlock就换成使用多个不相关的、没有主从关系的redisMaster节点,来保证他们不会同时宕机,总数最好为奇数个。
redLock通过在多个节点上同时获取锁,如果超过半数的节点都获取锁成功,才算成功;否则失败,回滚删除所有节点的锁。
参考
原来大厂Redis分布式锁都这么设计的
Redis分布式锁的原理以及如何续期
相关推荐:
AI撰写率:让创作变得更高效,助力内容产业腾飞,人力ai
ChatGPT故障:科技背后的秘密与应对策略,华为什么手机带ai功能
互联网快排:助力企业网站流量爆发的秘密武器,西安网站建设找资源公司
SEO包月服务:助力企业提升网站排名与流量的长期利器,网站建设流程 报读文库
ChatGPT服务器坏了?了解背后的技术与应对策略,AI模块代表
SEO字:如何通过精准关键词提升网站流量与排名,赣州于都网站推广
seo链接锚是什么,什么是锚链接,如何设置锚链接 ,保山智能AI
什么是seo伪原创,seo就业前景伪原创怎么写 ,头像ai画怎么弄
在线AI写文:开启高效创作新时代
seo网络推广要做什么,seo 网络推广 ,ai少女喝药
2025年SEO最新技术:让你的网站脱颖而出!,ai少女特色
SEO定价策略:如何根据企业需求定制最佳价格方案,教育培训抖音营销推广
ChatGPT的诞生,预示着人工智能大规模应用的时代已经来临,ai此生不渝
优化平台:让数字化转型更简单、更高效,莆田谷歌seo品牌排行
ChatGPT使用问题?如果您正在使用VPN,请尝试将其关闭,ai制作渐变立体
ChatGPT不能用?揭秘你可能忽视的真相和解决方法,强国ai2022
怎么查一篇文章是不是AI写的?你需要这几个关键方法!
SEO课:让你从小白变成搜索引擎优化高手,推广自媒体营销计划
SEO动态:2025年SEO趋势与优化技巧解析,十堰外贸网站推广费用
AI助手推进:智能化时代的企业革命,ai改变图片颜色
URL站长的崛起:打造高效网站运营的秘密武器,网站建设费用计算依据
ChatGPT怎么打不开了?揭秘背后的原因与解决方法,ai中打开ai文件丢失
SEO联系:如何通过SEO优化提升您的网络营销效果,企业营销推广获客
WPJVX:开启数字化未来的智慧平台,关键词排名技术咨询乐云seo
OpenAI注册问题解决方案:如何顺利通过手机号验证,反对ai头像
ChatGPT不登录,如何畅享AI的智能服务?,手信ai
优化服务网-提升客户体验,打造全方位智慧服务平台,东莞网站建设员招聘信息
SEO到底怎么做?揭秘从零到精通的完整SEO优化攻略,鸟瞰ai
优化提长:让企业效能提升的秘密武器,长沙网站建设创意
为什么越来越多的人选择在知乎发布文章?这里面的机会你可能还没发现!,潍坊关键词排名提升
文章创作AI:引领智能写作的新时代
AI上的文章属于原创吗?人工智能创作内容的归属问题
SEO详解:如何优化你的网站提升排名,获得更多流量,伊春湖南网站优化推广
SEO优化需要给网站做哪些优化工作?,ai捕捉火苗
SEO译为:网站排名背后的优化策略,会展中心网站优化
“标题制造机”:颠覆内容创作的秘密武器,助你轻松打造吸引力十足的标题,景区线上推广用哪些网站
seo网站是什么东西,seo网站是什么东西啊 ,ai锯齿消失
专业关键词助力SEO优化,让你的内容脱颖而出,东营响应式网站优化
怎么使用AI生成文章,轻松提升写作效率!
SEO查看-如何通过精确分析提升网站流量与排名,东丽网站建设价格
什么叫改写-解读“改写”背后的艺术与技巧,网站制作建设模板图片
Zkept:重塑未来生活的智能科技革新,营销推广的面试问题
seo规范是什么,seo行业标准 ,啊龙ai音乐
软件AI的全称:人工智能驱动未来的关键力量
ChatGPT显示无法加载网站是怎么回事?解决方法!,glow将军ai
企业如何借助SEO咨询实现精准流量引爆,助力业绩提升,立刻推广的旅游线下营销
SEO元素-提升网站排名的核心要素,推广分成网站有哪些
ChatGPT无法访问原因分析及解决方案,斑马ai报道
SEO可以改变你的商业未来:如何通过优化提升网站流量和转化率,五粮液营销推广
ChatGPT全球宕机:人工智能的崩塌与未来的挑战,中国ai和美国ai教父