
一种简单的redis分布式锁方案
发布日期:2021-05-09 03:56:08
浏览次数:12
分类:博客文章
本文共 1339 字,大约阅读时间需要 4 分钟。
前言
用于分布式程序彼此之间不能同时执行的场景。例如计算程序等。
代码
锁工具类
@Componentpublic class RedisLockUtil { @Autowired private RedisTemplate redisTemplate; private static final String CALC_LOCK_KEY = "CalculateLock"; private static final Long CALC_LOCK_TIME = 30L; public boolean setIfAbsent (String key,String value,Long lockTime) { return redisTemplate.opsForValue().setIfAbsent(key,value,lockTime,TimeUnit.MINUTES); } public String getValue(String key) { return (String) redisTemplate.opsForValue().get(key); } public void delete (String key) { redisTemplate.delete(key); } public boolean calcLock (String value) { return redisTemplate.opsForValue().setIfAbsent(CALC_LOCK_KEY,value,CALC_LOCK_TIME,TimeUnit.MINUTES); } public String getCalcValue () { return (String) redisTemplate.opsForValue().get(CALC_LOCK_KEY); } public String getTimeSeed(){ return String.valueOf(new Date().getTime()); } public void unCalclock () { redisTemplate.delete(CALC_LOCK_KEY); }}
实际调用的代码
@PostMapping("/calc")public void calc() throws Exception{ String redisValue = "计算"+redisLockUtil.getTimeSeed(); boolean flag = redisLockUtil.calcLock(redisValue); if(!flag){ return ; } try{ //业务代码 }catch (Exception e){ e.printStackTrace(); //业务代码 return ; }finally { //为了防止过期导致删除了其他人的锁 if(redisValue.equals(redisLockUtil.getCalcValue())){ redisLockUtil.unCalclock(); } } return;}
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月18日 15时39分58秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
算法 - 如何从股票买卖中,获得最大收益
2021-05-09
算法 - 链表操作思想 && case
2021-05-09
C#之反射、元数据详解
2021-05-09
通俗易懂设计模式解析——单例模式
2021-05-09
通俗易懂设计模式解析——抽象工厂模式
2021-05-09
前端数据渲染及mustache模板引擎的简单实现
2021-05-09
设计模式系列之工厂模式三兄弟(Factory Pattern)
2021-05-09
OAuth2.0认证详解
2021-05-09
Netflix是什么,与Spring Cloud有什么关系
2021-05-09
在滴滴和头条干了 2 年后端开发,太真实…
2021-05-09
你还在用命令看日志?快用 Kibana 吧,一张图片胜过千万行日志!
2021-05-09
Linux中对用户操作
2021-05-09
Linux查看CUDA和cuDNN版本
2021-05-09
No.017:Letter Combinations of a Phone Number
2021-05-09
C#获取Excel中所有的Sheet名称
2021-05-09
SQL Syscolumns
2021-05-09
jQuery实现日期字符串格式化
2021-05-09
[最全整理]关于决策树的一切
2021-05-09
100天搞定机器学习|Day9-12 支持向量机
2021-05-09
100天搞定机器学习|Day19-20 加州理工学院公开课:机器学习与数据挖掘
2021-05-09