1.redisson简介
Redisson是Redis官方推荐的Java版的Redis客户端。它提供的功能非常多,也非常强大,此处我们只用它的分布式锁功能。
redisson git地址
2.redisson使用
redisson结合spring-boot-starter-data-redis使用
- 依赖
<dependency>
<groudId>org.redisson<groudId/>
<artifactId>redisson<artifactId/>
<version>3.11.1<version/>
</dependency>
- 配置redissonClient
public class RedisConfig{
@Bean
public RedissonClient redissonClient(){
Config config = new Config();
config.useClusterServer()
.setScanInterval(2000)
.addNodeAddress("redis://127.0.0.1:6379");
return Redisson.create(config);
}
}
- 使用redisson
String lockKey = RedisKeyPrefixConstant.LOCK_COURSE + courseId;
// 获取redis分布式锁
RLock lock = redissonClient.getLock(lockKey);
try {
//尝试加锁
boolean res = lock.tryLock(10, TimeUnit.SECONDS);
if (res) {
value = hashOperations.get(RedisKeyPrefixConstant.COURSE, String.valueOf(courseId));
if (StringUtils.isBlank(value)) {
log.info("从数据库中读取");
courseModel = courseRepository.findById(courseId).orElse(null);
hashOperations.put(RedisKeyPrefixConstant.COURSE, String.valueOf(courseId), JSON.toJSONString(courseModel));
}
}
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
//释放锁
lock.unlock();
}