Redis------------redis实现分布式锁java代码

以下是Java代码的示例,使用Redis实现分布式锁:

import redis.clients.jedis.Jedis;
import redis.clients.jedis.params.SetParams;

public class DistributedLock {

    private static final String LOCK_KEY = "my_lock";
    private static final int LOCK_EXPIRE_TIME = 5000; // 锁过期时间,单位毫秒

    private Jedis jedis;

    public DistributedLock(Jedis jedis) {
        this.jedis = jedis;
    }

    public boolean lock() {
        // 设置锁的参数
        SetParams params = new SetParams();
        params.nx(); // 只有不存在时才设置
        params.px(LOCK_EXPIRE_TIME); // 设置过期时间,单位毫秒

        // 尝试获取锁
        String result = jedis.set(LOCK_KEY, "locked", params);

        return "OK".equals(result);
    }

    public void unlock() {
        // 删除锁
        jedis.del(LOCK_KEY);
    }

}

使用时,可以创建一个DistributedLock对象,然后在需要加锁的地方调用lock()方法尝试获取锁:

Jedis jedis = new Jedis("localhost");
DistributedLock lock = new DistributedLock(jedis);

if (lock.lock()) {
    try {
        // 在锁定期间执行需要保护的代码
    } finally {
        lock.unlock();
    }
} else {
    // 未能获取锁,处理失败情况
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值