之前讲了基于Redis原子操作实现分布式锁,代码比较冗余而且有缺陷,Redis官方推荐Redisson,同样也是基于Redis,但Redisson提供了很多分布式操作服务,直接调用封装好的API操作,代码更直观。
Redisson提供的操作服务和AQS队列同步器类似,不过AQS基于内存,而Redisson基于Redis所以可用于分布式环境。
1. 添加依赖
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.5.0</version>
</dependency>
2. application.yml
spring:
redis:
database: 0
host: localhost
port: 6379
# lettuce:
# pool:
# max-active: 8
# max-wait: -1
# max-idle: 8
# min-idle: 0
jedis:
pool:
max-active: 8
max-wait: -1
max-idle: 8
min-idle: 0
timeout: 5000
3. Redisson配置类
以下配置为单机模式,Redisson还支持哨兵和集群模式,
参考:https://blog.youkuaiyun.com/unclecoco/article/details/99412915
@Configuration
public class RedissonConfiguration {
@Value("${spring.redis.host}")
private String host;
@Value("${spring.redis.port}")
private String port;
@Value("${spring.redis.password}")
private String password;
/**
* 单机模式,此外还支持哨兵和集群配置
* 详见https://blog.youkuaiyun.com/unclecoco/article/details/99412915
* @return
*/

本文介绍了如何利用Redisson框架来实现分布式锁,避免基于Redis原子操作的冗余代码和潜在缺陷。Redisson提供了丰富的分布式操作服务,通过简单的API调用即可实现,同时还支持哨兵和集群模式。在实现过程中,主要涉及Redisson配置、设计Locker接口、RLock的使用以及单元测试,确保在分布式环境中实现安全的锁机制。
最低0.47元/天 解锁文章
2696

被折叠的 条评论
为什么被折叠?



