当前位置: 首页 > news >正文

分布式锁与锁续期

一、借助redis模版创建一个分布式锁

private boolean setRedis(String key, long expireMillis) {try {String rst = redisTemplate.execute((RedisCallback<String>) connection -> {JedisCommands commands = (JedisCommands) connection.getNativeConnection();return commands.set(key, getLockVal(key), SetParams.setParams().nx().px(expireMillis));});return StringUtils.equals(rst, "OK");} catch (Exception e) {log.error("set redis exception, key:{}", key, e);}return false;}

二、创建锁续期的方法

 /*** @Author: mz* @Param: key* @Param: expireMillis 设置锁的最大持有锁时间* @Param: timeOutMillis 最大等待时间,规定100ms重试一次* @Return: boolean**/@Overridepublic boolean tryLock(String key, long expireMillis, long timeOutMillis) {boolean rst = setRedis(key, expireMillis);try {//每间隔100ms时间间隔尝试去获取一次锁(超时时间内最后一次sleep时间如果不够RETRY_INTERVAL_MILLIS,则间隔剩余时间最后尝试获取一次)while (!rst && timeOutMillis > 0) {if (timeOutMillis >= 100) {timeOutMillis = timeOutMillis - 100;TimeUnit.MILLISECONDS.sleep(100);} else {TimeUnit.MILLISECONDS.sleep(timeOutMillis);timeOutMillis = 0;}rst = setRedis(key, expireMillis);}} catch (InterruptedException e) {log.error("tryLock exception, key:{}, expireMillis:{}, timeOutMillis:{}", key, expireMillis, timeOutMillis, e);return false;}return rst;}

http://www.xdnf.cn/news/652393.html

相关文章:

  • 轻量级视觉语言模型 Dolphin:高效精准的文档结构化解析利器
  • 电机控制学习笔记
  • 深入解析Spring Boot与Spring Security整合实现JWT认证
  • ADS学习笔记(四) S参数仿真
  • 网络编程1
  • SAP ERP 系统拆分的七大挑战
  • WIN--文件读写
  • Linux的top命令使用
  • 在前端项目中实现打包后可配置地址(如 API 域名、静态资源路径等)
  • 告别复杂操作!链抽象如何让 Web3 用户体验媲美 Web2?
  • Element UI 对话框固定宽度 + 遮罩层深度定制方案
  • 零基础设计模式——结构型模式 - 适配器模式
  • 基于 docker 部署 k8s 集群
  • 机器学习中的线性回归:从理论到实践的深度解析
  • 运行comfyui Wan2.1 文生视频工作流,问题总结
  • vue3+vite项目中使用Tailwind CSS
  • 鸿蒙OSUniApp 制作个性化的评分星级组件#三方框架 #Uniapp
  • 力扣刷题Day 56:岛屿数量(200)
  • 多线程(5)——单例模式,阻塞队列
  • C++多态与虚函数
  • UR10e 机器人如何通过扭矩控制接口实现高效装配
  • window 显示驱动开发-呈现开销改进
  • 如何在 Django 中集成 MCP Server
  • Leetcode 3556. Sum of Largest Prime Substrings
  • TPAMI 2025 | CEM:使用因果效应图解释底层视觉模型
  • Hive 分区详解:从基础概念到实战应用
  • R 语言科研绘图 --- 热力图-汇总
  • Linux系统:动静态库的制作与安装
  • ollama list模型列表获取 接口代码
  • Python环境搭建