springboot 分布式锁
时间: 2023-11-08 21:04:50 浏览: 72
在 Spring Boot 中,可以使用 Redis 实现分布式锁。具体实现方式如下:
1. 首先需要引入 Redis 相关依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
```
2. 然后创建一个 RedisTemplate 对象:
```java
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(factory);
// 设置 key 和 value 的序列化方式
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
return redisTemplate;
}
```
3. 接下来就是实现分布式锁的核心代码,具体实现方式如下:
```java
public boolean lock(String key, String value, long expireTime) {
if (redisTemplate.opsForValue().setIfAbsent(key, value)) {
redisTemplate.expire(key, expireTime, TimeUnit.MILLISECONDS);
return true;
}
return false;
}
public void unlock(String key, String value) {
if (value.equals(redisTemplate.opsForValue().get(key))) {
redisTemplate.delete(key);
}
}
```
上面的代码中,lock() 方法用于尝试获取锁,如果获取成功则返回 true,否则返回 false;unlock() 方法用于释放锁。
阅读全文