简单理解一下redis分布式锁
redis分布式锁实际上就是在redis中存入一个key,如果这个key存在说明已经被加锁,那么其他线程不能再加锁。当线程执行结束就删除这个key,这样就释放了锁。所以redis分布式锁的实现步骤为:首先使用setIFAbsent()方法来添加key(也可以使用set方法加NX参数),这个方***判断是否已经存在key,若已经存在那么会返回false表示加锁失败;如果线程执行中抛出了异常那么锁就会一直存在,所以要给锁设置一个失效时间,过了一定时间之后会自动删除锁;如果线程执行时间过长,在失效时间结束自动释放锁时,线程还在执行,那么在线程执行结束后会再次释放锁,这时会删除掉别的线程已经添加的锁,所以要给key设置一个随机的线程独有的value值,每次线程结束要释放锁时先判断一下当前的锁的value是否是自己的value,是的话再删除。

以上的解锁操作(先判断是否为自己的value然后删除锁)得是原子操作,所以要用到Lua脚本,Lua脚本能够原子性地执行多条redis命令。
全部评论
我个人觉得redis还是蛮复杂的
点赞 回复 分享
发布于 2022-08-21 14:56 陕西

相关推荐

关于我大学本科四年,想了很多,但还是不知道该怎么动笔 “大学四年,是我从懵懂少年走向职场青年的转折期。这一路跌跌撞撞,有迷茫,有遗憾,也有成长和决心。” 大一刚进来时仍然有高中那股学习劲,经常一个人去图书馆学高等数学,但后面劲头一过便开始在宿舍开启躺平生活(现在想想那段时间真的很爽,无忧无虑)。由于大一担任班干部,所以经常要跟其他班的班干部交流,在此期间认识了隔壁班的一位女生,短发而很可爱,因为很多团建还有比赛都是我们两班一起参加的,而且我和她都是负责人,所以交集很多,后面慢慢地彼此对产生了好感,所以在大一刚开学的2个月后,我们在一起了,彼此之前都是初恋。但当时我真的是太太太直男了,对感情的想...
真烦好烦真烦:骗哥们可以,别把你自己也骗到了就行。哥们被你骗了真无所谓的,打个哈哈就过了。但希望你打完这段话后擦一下眼角,别让眼泪掉在手机屏幕上了就行。你说的这些话,哥们信一下也是没什么的。还能让你有个心里安慰,但这种话说出来骗骗兄弟就差不多得了,哥们信你一下也不会少块肉,但是你别搞得自己也当真了就行。哥们被你骗一下是真无所谓的,兄弟笑笑也就过去了。真不是哥们想要破你防,你擦擦眼泪好好想想,除了兄弟谁还会信你这些话?
点赞 评论 收藏
分享
昨天 18:25
中南大学 Java
内向的柠檬精在研究求职打法:有没有可能你前端进不了大厂基本就废了?后端就算进不了大厂好歹还能吃饱吧 你不会以为人人都能进大厂吧
点赞 评论 收藏
分享
05-30 13:04
已编辑
门头沟学院 算法工程师
智谱和米哈游都是ai大模型agent的业务钱的话还是米更多,几乎翻倍了,有没有老哥是两个公司其中一个的,能问问转正率咋样嘛,我问的hr回答都是做的好就可以转正暑期实习
码农索隆:选米哈游:短期高薪、敢承担风险、具备强创新能力,且愿押注游戏AI赛道。 选智谱:稳定性与行业通用能力积累,接受薪资差距以换取更稳妥的职业基础。
投递北京智谱华章科技等公司6个岗位 > 实习期间如何提升留用概率?
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务