当前位置: 首页 > 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();}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Ubuntu 22.04上稳定安装与配置搜狗输入法详细教程
  • 分享一个基于文本挖掘的微博舆情分析系统Python网络舆情监控系统Flask爬虫项目大数据(源码、调试、LW、开题、PPT)
  • 基于深度学习的智能工厂优化
  • 光伏对国内各行各业的影响
  • linux 提权
  • 【QT代码控制Linux开发板】QT控制嵌入式Linux开发板运行shell脚本
  • 证书学习(二)搞懂 keystore、jks、p12、pfx、crt、csr、pem文件的区别
  • ResNet网络学习
  • 幂等性是什么意思?
  • 基于Shader实现的UGUI描边解决方案遇到的bug
  • UE基础 —— 打包项目
  • leetcode47. 全排列 II有重复元素的全排列,深度优先搜索
  • 【022】字符串的处理(输出,分割,删除,新增,替换,查找,长度)_#VBA
  • c++11异常
  • Linux驱动入门实验班——DHT11、DS18B20模块驱动(附百问网视频链接)
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 【译】理解JavaScript:new 关键字
  • 2017-09-12 前端日报
  • Android 控件背景颜色处理
  • echarts花样作死的坑
  • input的行数自动增减
  • Java反射-动态类加载和重新加载
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • Lsb图片隐写
  • Lucene解析 - 基本概念
  • nginx 负载服务器优化
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • python学习笔记-类对象的信息
  • Windows Containers 大冒险: 容器网络
  • 动态规划入门(以爬楼梯为例)
  • 技术:超级实用的电脑小技巧
  • 力扣(LeetCode)965
  • 浅谈Golang中select的用法
  • 如何编写一个可升级的智能合约
  • 如何在GitHub上创建个人博客
  • 试着探索高并发下的系统架构面貌
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 硬币翻转问题,区间操作
  • 选择阿里云数据库HBase版十大理由
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • ###C语言程序设计-----C语言学习(6)#
  • #QT项目实战(天气预报)
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (C11) 泛型表达式
  • (SERIES12)DM性能优化
  • (五)Python 垃圾回收机制
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)setTimeout 和 setInterval 的区别
  • .apk 成为历史!
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET Framework杂记