redis 使用互斥锁 java代码
时间: 2023-10-24 17:20:25 浏览: 45
在Java中使用Redis实现互斥锁的代码示例:
```java
public class RedisMutex {
private final StringRedisTemplate redisTemplate;
private final String lockKey;
private final long expireTime;
public RedisMutex(String lockKey, long expireTime, StringRedisTemplate redisTemplate) {
this.lockKey = lockKey;
this.expireTime = expireTime;
this.redisTemplate = redisTemplate;
}
public boolean acquire() {
Boolean result = redisTemplate.opsForValue().setIfAbsent(lockKey, "");
if (result != null && result) {
redisTemplate.expire(lockKey, expireTime, TimeUnit.SECONDS);
return true;
}
return false;
}
public void release() {
redisTemplate.delete(lockKey);
}
}
```
调用示例:
```java
// 创建 RedisMutex 实例
RedisMutex mutex = new RedisMutex("lock_key", 60, redisTemplate);
// 获取锁
if (mutex.acquire()) {
try {
// do something
} finally {
// 释放锁
mutex.release();
}
} else {
// 获取锁失败
}
```
说明:
- `redisTemplate` 是 `org.springframework.data.redis.core.StringRedisTemplate` 的实例,用于操作 Redis。
- `lockKey` 是锁的键名。
- `expireTime` 是锁的过期时间,单位为秒。
- `acquire()` 方法用于获取锁,如果获取成功返回 true,否则返回 false。
- `release()` 方法用于释放锁。