java代码实现redis分布式锁
时间: 2023-08-28 13:04:49 浏览: 130
好的,关于实现redis分布式锁的java代码,你可以参考以下代码:
```java
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.params.SetParams;
public class RedisDistributedLock {
private JedisPool jedisPool;
// 锁定一个资源
public boolean lock(String resource, String requestId, int expireTime) {
try (Jedis jedis = jedisPool.getResource()) {
SetParams params = new SetParams().nx().ex(expireTime);
String result = jedis.set(resource, requestId, params);
return result != null && result.equalsIgnoreCase("OK");
}
}
// 释放一个资源
public void unlock(String resource, String requestId) {
try (Jedis jedis = jedisPool.getResource()) {
String value = jedis.get(resource);
if (value != null && value.equalsIgnoreCase(requestId)) {
jedis.del(resource);
}
}
}
}
```
需要注意的是,这个代码中的分布式锁是基于redis的set指令,利用了redis的原子性操作实现的。其中,nx表示只有在key不存在时才能set,ex表示key的过期时间。同时,为了保证线程安全,这里使用了JedisPool来获取Jedis实例。
阅读全文