首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
接一个顺利好运
门头沟学院 Java
发布于江苏
关注
已关注
取消关注
@Java大湿兄:
Java常见面试题:如何使用Redis实现分布式锁?
首先来说 Redis 作为一个独立的三方系统,其天生的优势就是可以作为一个分布式系统来使用,因此使用 Redis 实现的锁都是分布式锁,理解了这个概念才能看懂本文所说的内容。分布式锁的示意图,如下所示:分布式锁实现使用 Redis 实现分布式锁,可以通过 setnx(set if not exists)命令实现,当我们使用 setnx 创建键值成功时,则表明加锁成功,否则既代码加锁失败。因为 Redis 主线程是单线程运行的,所以也不会有同时加锁成功的情况。实现命令如下:127.0.0.1:6379> setnx lock true(integer) 1 #创建锁成功#逻辑业务处理...127.0.0.1:6379> del lock(integer) 1 #释放锁当我们重复加锁时执行结果如下:127.0.0.1:6379> setnx lock true # 第一次加锁(integer) 1127.0.0.1:6379> setnx lock true # 第二次加锁(integer) 0从上述命令中可以看出,我们可以使用执行的结果是否为 1 来判断加锁是否成功。分布锁问题然而,使用 setnx 实现分布锁有一个【死锁问题】,就是当加锁的线程(或应用)掉电或崩溃之后,其他线程只能无限等待下去的问题。此时,我们解决死锁问题可以通过添加设置锁的过期时间来实现。也就是 setnx 和 expire 配合使用,在 Redis 2.6.12 版本之后,新增了一个强大的功能,我们可以使用一个原子操作也就是一条命令来执行 setnx 和 expire 操作了,实现命令如下:127.0.0.1:6379> set lock true ex 30 nxOK #创建锁成功127.0.0.1:6379> set lock true ex 30 nx(nil) #在锁被占用的时候,企图获取锁失败其中 ex 为设置超时时间, nx 为元素非空判断,用来判断是否能正常使用锁的。小结Redis 作为一个独立的三方系统,其优势是天生可以实现分布式锁。它实现分布式锁是通过 setnx 来实现的,然而只有 nx(not exists)可能会发生死锁的问题,所以我们最终实现死锁应该使用 set nx ex 的方式来实现。小思考:当设置了过期时间之后,Redis 实现分布式依然会有一个小小的问题,有人知道这个问题和解决方案吗?欢迎评论区写出你的答案。此文章点赞过 100,我会给出标准答案。
点赞 2
评论 1
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
08-14 10:50
北京林业大学 硬件开发
中兴通讯未来领军有没有得ssp的来说下
今天刚面完三面,HR说通过就没有四面了SSP也是三次面试吗?不会给我掉到白菜价吧
中兴通讯三面11人在聊
点赞
评论
收藏
分享
08-15 10:56
门头沟学院 测试开发
小红书没接到电话是不是挂了
小红书疯狂给我打电话,我一个没接到打了好几次之后就不打了。。。不会因为这个把我挂了把
我的秋招“寄”录
点赞
评论
收藏
分享
08-05 11:28
郑州轻工业大学 Java
找不到实习
球球各位大佬帮鼠鼠看看简历,boss上投了20多份简历了,一个面试也没有,我感觉简历是不是有大问题😭
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
06-21 11:29
鱼皮翻车了?牛油们怎么看
凉风落木楚山秋:
他们两都收获了流量,只有爷浪费了时间
点赞
评论
收藏
分享
08-14 11:44
门头沟学院 Java
阳光电源提前批offer
阳光电源提前批有线下参观极客营有佬去拿到offer了吗?
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
给26届小伙伴们一些建议
1.0W
2
...
大家辛辛苦苦秋招 结果你作弊拿到了字节算法sp
6483
3
...
面试不要紧张,人生的容错率高的可怕
5713
4
...
字节三面-会赢吗
4701
5
...
8.14 腾讯TEG-云架构平台部-后台开发一面凉经
4654
6
...
半夜12点都叫提前下班了?
4324
7
...
如何提高秋招面试成功率?
4306
8
...
京东一面 最轻松的一集
4244
9
...
部门新员工就我学历最低,自卑了
3698
10
...
美团 后端开发 一面
3408
创作者周榜
更多
正在热议
更多
#
你怎么看待AI面试
#
10357次浏览
121人参与
#
中兴工作体验
#
21085次浏览
265人参与
#
面试太紧张了怎么办?
#
13085次浏览
246人参与
#
业务面应该做哪些准备
#
4971次浏览
122人参与
#
实习需要主动找活干吗?
#
11004次浏览
113人参与
#
机械求职避坑tips
#
56046次浏览
388人参与
#
国企vs私企,你更想去?
#
252446次浏览
2237人参与
#
大厂面试问八股多还是项目多?
#
7334次浏览
119人参与
#
你有没有为省钱「拼过命」
#
4452次浏览
89人参与
#
我的职场心眼子段位
#
41762次浏览
698人参与
#
你是如何祛除班味的
#
3798次浏览
62人参与
#
转正答辩报告怎么写
#
5219次浏览
61人参与
#
你被mentor骂过吗?
#
17790次浏览
106人参与
#
我的省钱小妙招
#
23373次浏览
376人参与
#
移动求职进展汇总
#
6132次浏览
54人参与
#
秋招投递记录
#
40152次浏览
431人参与
#
饿了么求职进展汇总
#
67849次浏览
660人参与
#
双非本科的出路是什么?
#
133633次浏览
1245人参与
#
机械人,你最希望上岸的公司是?
#
175841次浏览
1876人参与
#
你觉得技术面多长时间合理?
#
105198次浏览
753人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务