基于java 写 Redis锁
以下是一个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 著作权归作者所有。请勿转载和采集!