RedisDistributedLock 分布式锁

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

java 复制代码
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();
    }
}
相关推荐
BestAns1 小时前
一文带你吃透 Java 反射机制
java·后端
wasp5201 小时前
AgentScope Java 核心架构深度解析
java·开发语言·人工智能·架构·agentscope
2501_916766542 小时前
【Springboot】数据层开发-数据源自动管理
java·spring boot·后端
自在极意功。2 小时前
MyBatis 动态 SQL 详解:从基础到进阶实战
java·数据库·mybatis·动态sql
软件管理系统2 小时前
基于Spring Boot的便民维修管理系统
java·spring boot·后端
百***78753 小时前
Step-Audio-2 轻量化接入全流程详解
android·java·gpt·php·llama
快乐肚皮3 小时前
MySQL递归CTE
java·数据库·mysql·递归表达式
tap.AI3 小时前
(三)Stable Diffusion 3.5 与 ComfyUI
分布式·stable diffusion
廋到被风吹走3 小时前
【Spring】DispatcherServlet解析
java·后端·spring