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

RedisDistributedLock 分布式锁

设计一个简单的 RedisDistributedLock 类,实现单例模式,并包含基本的锁定机制。这个类将使用 Redis 来管理锁,确保在分布式系统中资源的同步访问

import redis.clients.jedis.Jedis;public class RedisDistributedLock {private static RedisDistributedLock instance;private Jedis jedis;private final String redisHost;private final int redisPort;// 私有构造函数,防止外部实例化private RedisDistributedLock(String host, int port) {this.redisHost = host;this.redisPort = port;this.jedis = new Jedis(redisHost, redisPort);}// 公共静态方法,返回唯一实例public static synchronized RedisDistributedLock getSingletonInstance(String host, int port) {if (instance == null) {instance = new RedisDistributedLock(host, port);}return instance;}// 尝试获取锁public boolean lockTransaction(String transactionId) {String key = "lock:" + transactionId;String result = jedis.set(key, "locked", "NX", "EX", 10); // 锁超时时间为10秒return "OK".equals(result);}// 释放锁public void unlockTransaction(String transactionId) {String key = "lock:" + transactionId;jedis.del(key);}// 清理资源public void close() {jedis.close();}
}

http://www.lryc.cn/news/429332.html

相关文章:

  • Java之包装类
  • Linux - 权限
  • 免费图形化nginx管理工具nginxWebUI
  • 编程上的挫折不可怕,可怕的是你畏惧了
  • docker逃逸手法
  • 3 pytest Fixture
  • pinctl 和 gpio子系统驱动
  • RocketMQ消息堆积了怎么解决?
  • C++第十二弹 -- STL之list模拟实现
  • Destiny of Gods首轮测试正式开启,参与玩家数量突破10万
  • QT聊天室基于Tcp
  • 公开课观后感:密歇根大学python for everyone
  • goweb框架-gin
  • 2024年接口测试高频面试题及答案
  • ESP32-C3在MQTT访问时出现“transport_base: Poll timeout or error”问题的分析(8)
  • Linux: 忘记密码的解决方法,passwd
  • 36. 有效的数独【 力扣(LeetCode) 】
  • 机器学习中的没有免费午餐定理
  • 高级java每日一道面试题-2024年8月21日-框架篇[Spring篇]-使用IOC容器应该注意哪些?
  • LLM训练推理相关概念
  • IP in IP 协议
  • DAY2: HTTP请求报文和响应报文是怎样的,有哪些常见的字段?| HTTP有哪些请求方式?| GET请求和POST请求的区别
  • 线性代数:每日一题1/特征值与相似对角化
  • Android UI:PopupWindow:API
  • 什么是DevUI?
  • DAY53
  • python中len是什么
  • 推荐一个开源的kafka可视化客户端GUI工具(Kafka King)
  • day 10 贪心算法
  • 网络安全审计技术原理与应用