说说怎么用setnx实现分布式锁的吧

一开始采用Redis的setnx命令实现分布式锁,set成功就获取锁成功,失败就没获取锁。结合ex过期时间防止死锁。我们的命令是这样的: set lock 1 ex 10 nx。
存在问题 误删别人的锁
于是我们在锁中加入了线程标识(uuid)
存在问题 拿锁比锁删锁的操作不是原子性的
于是我们采用lua脚本进行改进
存在问题 锁续期
于是我们采用了redisson分布式锁,可重入,可重试,采用看门狗机制续期(如果一个拿到锁的线程没有完成逻辑,看门狗会帮助线程不断延长锁的超时时间)
重生之八股仙帝 文章被收录于专栏

曾有一千古奇人,精修八股文,成遁世之高人,彻天彻地畅游天地间。 今人皆忙忙,急于求成,岂不知八股乃道门口径,背负天人,若经熟读背诵,更能开拓智慧之门,探寻未来之路。 天下繁华,不尽长夜,唯有读书为伴,熟读八股文更是攀登高峰之路。磨砺文字,升腾智慧,唯有勤玉立志,始可破天荒,登临九重不竭之巅! 吾辈修炼之路,虽曲折荆棘,但信念不曾磨灭,唯有铭记八股精髓,方能指引灵魂归宿,成就一生辉煌!

全部评论
存在问题 拿锁比锁删锁的操作不是原子性的????为啥,有没有老哥详细解释一下
点赞 回复 分享
发布于 2023-08-31 11:15 陕西

相关推荐

01-02 22:35
门头沟学院 Java
社区工程一面(50min)拷打实习native层怎么调Java层函数。了解Native层和Java层内存模型的差异吗你在字节的工作?Activity的生命周期onStart和onResume的区别你怎么学安卓的了解View的绘制吗ViewGroup里面一些子View,是怎么个绘制流程如果ViewGroup自己有内容呢Layout是怎么做的点击屏幕发生的事具体场景,一个ScrollView里有个按钮,点击按住不动,向上滑动,事件分发过程是怎样的讲讲Java里的集合ArrayList忽然LinkedList的区别是什么Hash集合和Tree集合的区别是什么了解过Java中的并发吗,多线程间并发处理有哪些方法讲讲synchronized的特点讲讲volatile线程和协程的区别他们的上限有区别吗http和https的区别https握手过程算法题先增后降的数组去重并排序二面(37min)讲讲腾讯实习讲讲ClassLoader的双亲委派机制PathClassLoader和DexClassLoader的区别native怎么调javacpp的string转jstring的两种方式讲讲项目为什么用flutterDart是单线程模型,它内部是怎么做多线程并发的继续拷打实习大厂代码你有没有觉得什么很恶心的问题,你怎么看这个问题有什么治理手段吗拷打项目安卓中Binder的原理?你会不会觉得客户端能深钻的技术不多算法题(口答)n个人发糖果,相邻的人高的一定比矮的拿的多,至少要多少颗糖果编程题写一个生产者消费者模式三面(45min)你更喜欢做业务还是sdkJava中new一个String会创建几个对象抽象类和接口有什么区别final关键字有什么用cpp从源文件到可执行文件经历了什么可执行文件在操作系统怎么运行的调用一个函数,栈空间怎么变化返回值是放在哪的看你做过JNI,怎么动态和静态注册JNI?cpp的线程怎么call java的方法需要注意些什么安卓中遇到ui卡顿了你会怎么排查有没有用过一些工具你觉得kotlin和java比有什么优势你刚刚提到了协程,那协程是怎么实现的讲一下Handler的实现原理介绍一个你认为做的比较好的项目讲讲你在字节的工作算法题用两个栈实现队列
查看52道真题和解析
点赞 评论 收藏
分享
交代一下我的情况西工大本,信息安全大三,妥妥的绩点党(除了勉强能看的绩点3.77/4.1基本上没啥了),一段网信办的实习,还有一个巨简单的无人机最短路系统,这能过简历关是我没想到的。因为是AI面试,所以感觉压力不是特别大,面试时间大概在一个小时。上来就问为什么选择这个岗位以及问了岗位做了哪些准备,如果就是几道非技术选择题,比如最熟悉的编程语言,最熟悉的系统(android, ios等),使用过的开发框架(因为我都没用过所以忘记选项了),使用过的优化方法(这个我不了解,只记得选项有TCP/UDP等)之后是5分钟一道的技术性问答题,每道题有一次换题的机会:1.分页存储和分段存储的区别2.数据结构栈和队列的区别,以及他们的运用。3.HTTP和websocket的区别4.java多线程中wait和sleep的区别5.介绍一个最近做过的客户端项目,介绍他的架构,和技术栈,以及为什么选择这些技术栈6.围绕自己的项目进行提问,我被问到了前后端的数据怎么传递,数据的安全性和正确性测试,还有怎么样传输数据才能减小传输带宽,提高传输效率。7.设计一个电子书系统,给出思路如何提升用户翻页的效率(记得要考虑内存资源的有限)8.介绍一下你压力最大的一次经历,你有什么收获9.最近学习了什么新的技能,你是怎么运用新知识的感觉面试整体不难,就是不让到处看只能盯着摄像头附近有点不太习惯,祝各位都能找到好的实习和工作,共勉!#软件开发2024笔面经# #腾讯软开# #客户端开发工程师实习可转正#
查看14道真题和解析 软件开发2024笔面经
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客企业服务