Redis实现分布式锁

一.分布式锁需要解决的问题

二.使用命令

SETNX key value :如果key不存在,则创建并赋值

set if-Not-Exist

意思就是a线程执行就是1 其它线程过来就是0 要等a结束过期 其它线程过来就1了

三.如何解决SETNX长期有效问题

1.伪代码【有风险】原子性!!因为它变成了俩个操作了

expire设置过期时间 如果在设置过期时间前挂掉了 就被永久占用 key

2.redis版本2.6后 将 setnx 和 expire变为一个操作

重要:

操作:

四.

补充:

到了过期时间,业务代码还没有执行完成 怎么办?

1.守护线程

2.redisson看门狗【其实也守护线程】

#23届找工作求助阵地##机械制造薪资爆料##通信硬件薪资爆料##我的实习求职记录#
全部评论
狠狠收藏了
1 回复 分享
发布于 2023-02-11 13:18 陕西
感谢楼主的思路
1 回复 分享
发布于 2023-02-11 13:18 湖北
version2:补充锁续期问题
点赞 回复 分享
发布于 2023-03-07 11:37 广东

相关推荐

04-07 10:40
门头沟学院 Java
1. 自我介绍2. 上一段离职的原因3. 为什么会投递测开?对开发的诉求?4. 上一段实习中,接到一个需求,怎么去了解需求、解决需求?怎么投入工作的?5. 你查询一个页面,发现页面是空白的,你会怎么分析,考虑哪方面的原因?6. 如果你需要debug代码,你会怎么做?7. 说说Kafka工作机制8. 对于微信朋友圈的评论功能,需要你设计测试用例,你会怎么设计?9. 你提到打比赛的时候,作为队长身份组队完成了一个项目并获得了奖,你认为你作为一个owner,一个队长来说,在功能上、人员上比较难处理的一个点是什么?10. 如果说因为人员的变动导致你项目方案的变动,如果后续再做类似的项目,你认为可以改进的措施是什么?11. 如果说人员的工作意愿很强,但是因为不可抗力的原因导致人员变动,你会考虑哪些方式去避免或减少你作为owner带项目的风险?12. 在实习的时候,遇到某功能点的开发或其他的事项上,工作没有办法推动,你会怎么处理?13. 上一段实习,汇报的机制是怎么样?如果遇到卡点,你会怎么跟导师沟通?14. 你认为上一段的任务工期是否比较宽泛?15. Java常用的数据结构?(吟唱List、Set、Map)16. 手撕:LeetCode654 最大二叉树反问:1.业务(打车)2.工作内容第一次面测开,前面聊为什么投测开和对开发的诉求估计踩了不少雷,凉
查看16道真题和解析
点赞 评论 收藏
分享
评论
2
10
分享

创作者周榜

更多
牛客网
牛客企业服务