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();
    }
}
相关推荐
小羊没烦恼!1 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
俊昭喜喜里1 天前
java中的继承和多态的区别
java
小羊没烦恼!1 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕1 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码1 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖1 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时1 天前
01-06-A-JVM排查实战详解
java·jvm
vipxieliang1 天前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot
ba_pi1 天前
mysql 查询所有表名并授权
java
ProcessOn官方账号1 天前
java函数式编程--入门基础
java·编程·函数式编程