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();
    }
}
相关推荐
鱼跃鹰飞6 小时前
设计模式系列:工厂模式
java·设计模式·系统架构
a努力。6 小时前
国家电网Java面试被问:混沌工程在分布式系统中的应用
java·开发语言·数据库·git·mysql·面试·职场和发展
Yvonne爱编码6 小时前
Java 四大内部类全解析:从设计本质到实战应用
java·开发语言·python
J2虾虾6 小时前
SpringBoot和mybatis Plus不兼容报错的问题
java·spring boot·mybatis
毕设源码-郭学长7 小时前
【开题答辩全过程】以 基于springboot 的豪华婚车租赁系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
Tao____8 小时前
通用性物联网平台
java·物联网·mqtt·低代码·开源
曹轲恒9 小时前
SpringBoot整合SpringMVC(上)
java·spring boot·spring
JH30739 小时前
Java Spring中@AllArgsConstructor注解引发的依赖注入异常解决
java·开发语言·spring
码农水水10 小时前
米哈游Java面试被问:机器学习模型的在线服务和A/B测试
java·开发语言·数据库·spring boot·后端·机器学习·word
2601_9495758610 小时前
Flutter for OpenHarmony二手物品置换App实战 - 表单验证实现
android·java·flutter