首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
03-24 15:44
南京理工大学 人工智能
offer选择
一、科大讯飞 核心研发平台 AI算法工程师-自然语言处理方向二、华为 云计算BU AI应用工程师两者的工资短期内差别不大,之后想往互联网大厂或者一些类似的大企业跳槽。我了解的讯飞的核心研发是搞算法研究,但是具体是纯算法还是会有业务落地,不太清楚;华为云计算的这个岗位应该会偏工程,但是据说也可能会接触到算法,也就是和算法可能会沾点边。后续如果想往互联网大厂或者其他一些大企业跳槽的话,从公司到岗位,在AI行业内,这两家更推荐谁呢。
offer帮选
点赞
评论
收藏
分享
03-23 15:40
武汉理工大学 前端工程师
万兴科技前端一面
面试官人挺好的,问了超级多,面了差不多有四十分钟,就单纯问项目和八股,以及结合项目拓展的一些场景八股如下:CSS中position有哪些取值absolute是相对于什么进行定位的CSS中除了px还有哪些单位flex布局常用属性有哪些箭头函数和普通函数的区别解释事件循环机制,微任务包括哪些,宏任务包括哪些如何保证页面动画的流畅性(CSS动画和JS动画)浏览器存储数据的方式有哪些localStorage和sessionStorage区别两个页面的sessionStorage是互通的吗同源策略是什么,为什么需要这个HTTP和HTTPS有什么区别GET和POST请求区别canvas元素了解吗,如何用它...
发面经攒人品
点赞
评论
收藏
分享
03-12 15:40
门头沟学院 运营
刚加上这个hr,结果是个广子,发完第一句话就被封号了微信
点赞
评论
收藏
分享
03-08 18:49
已编辑
中南大学 Java
Java27 9本简历求拷打
引流:腾讯 阿里字节 美团
点赞
评论
收藏
分享
03-23 14:57
西安电子科技大学 Java
🌸 入职写了一个月全栈next.js 感想
背景介绍最近组内要做0-1的新ai产品, 招我进来就是负责这个ai产品,启动的时候这个季度就剩下两个月了,天天开会对齐进度,一个月就已经把基础版本给做完了,想要接入到现有的业务上面,时间方面就特别紧张,技术选型怎么说呢, leader用ai写了一个版本 我们在现有的代码进行二次开发这样, 全栈next.js 要学习的东西太多了 又没有前端基础,没有ai coding很难完成任务(十几分钟干完我一天的工作 claude4.5效果还不错 进度推的特别快), 自从trae下架了claude,后面就一直cursor claude 4.5了。nextjs+ts+tailwindcss+shadcn ui...
软件开发投递记录
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
双非选手的求职的感悟
2758
2
...
美团暑期实习一面
2735
3
...
阿里笔试竟然考了AI提示词。。。
2108
4
...
暑期结束,拥抱腾讯了
1683
5
...
双非两段大厂实习0offer,我做对了什么
1620
6
...
携程3.25Java开发二面面经
1596
7
...
字节一面-飞书后端暑期实习
1507
8
...
京东零售暑期一面
1329
9
...
快手暑期前端一面 3.25
1162
10
...
感谢信
1099
创作者周榜
更多
正在热议
更多
#
你的实习产出是真实的还是包装的?
#
19570次浏览
341人参与
#
中国电信笔试
#
31492次浏览
284人参与
#
开放七大实习专项,百度暑期实习值得冲吗
#
14678次浏览
217人参与
#
春招至今,你的战绩如何?
#
62826次浏览
570人参与
#
如果秋招能重来,我会____
#
96835次浏览
500人参与
#
一张图晒出你司的标语
#
4041次浏览
74人参与
#
米连集团26产品管培生项目
#
13135次浏览
285人参与
#
i人适合做什么工作
#
37057次浏览
124人参与
#
我是面试官,请用一句话让我破防
#
79650次浏览
219人参与
#
金三银四,你的春招进行到哪个阶段了?
#
21877次浏览
280人参与
#
哪些公司真双非友好?
#
69455次浏览
287人参与
#
投递几十家公司,到现在0offer,大家都一样吗
#
340376次浏览
2170人参与
#
AI面会问哪些问题?
#
26412次浏览
536人参与
#
找AI工作可以去哪些公司?
#
8469次浏览
217人参与
#
从事AI岗需要掌握哪些技术栈?
#
8395次浏览
282人参与
#
面试尴尬现场
#
220902次浏览
861人参与
#
五一之后,实习真的很难找吗?
#
102857次浏览
584人参与
#
你做过最难的笔试是哪家公司
#
32005次浏览
215人参与
#
应届生第一份工资要多少合适
#
20612次浏览
86人参与
#
聊聊你的职场新体验
#
336261次浏览
1894人参与
#
你小时候最想从事什么职业
#
159933次浏览
2072人参与
#
阿里笔试
#
177712次浏览
1307人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务