以下是一个Java实现的Redis锁示例代码:

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

public class RedisLock {

    private Jedis jedis;
    private String lockKey;
    private String lockValue;
    private int expirationTime;

    public RedisLock(Jedis jedis, String lockKey, String lockValue, int expirationTime) {
        this.jedis = jedis;
        this.lockKey = lockKey;
        this.lockValue = lockValue;
        this.expirationTime = expirationTime;
    }

    /**
     * 尝试获取锁
     * @return 是否获取到锁
     */
    public boolean tryLock() {
        SetParams params = new SetParams();
        params.nx().ex(expirationTime);
        String result = jedis.set(lockKey, lockValue, params);
        return "OK".equals(result);
    }

    /**
     * 释放锁
     */
    public void unlock() {
        jedis.del(lockKey);
    }
}

使用示例:

public class RedisLockExample {

    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost", 6379);
        RedisLock redisLock = new RedisLock(jedis, "lockKey", "lockValue", 10);

        if (redisLock.tryLock()) {
            try {
                // 获得锁后执行业务操作
                System.out.println("执行业务操作");
            } finally {
                redisLock.unlock();
            }
        } else {
            System.out.println("获取锁失败");
        }
    }
}

这个示例使用了Jedis库来连接Redis,并提供了tryLock()和unlock()方法来尝试获取锁和释放锁。在tryLock()方法中,我们使用了Redis的set命令来尝试设置锁的值,如果返回值为OK,则表示获取到了锁。在unlock()方法中,我们使用了Redis的del命令来删除锁的键值对。


原文地址: https://www.cveoy.top/t/topic/bJCq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录