分布式锁有哪些实现方式?
分布式锁必须要满足的特征:
互斥性:同一时刻只能有一个客户端持有锁。
可重入性:同一个客户端可以多次获取同一把锁而不发生死锁。
容错性:即使锁的持有者发生故障,系统也能够正确地释放锁。
性能:获取锁和释放锁的操作需要高效,不会成为系统瓶颈
目前对这些解决方案实现的比较完善的一个第三方组件:Redisson
引入依赖
<!--redisson-->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
</dependency>
加入配置
@Configuration
public class RedisConfig {
@Bean
public RedissonClient redissonClient() {
// 配置类
Config config = new Config();
// 添加redis地址,这里添加了单点地址,也可以使用config.useClusterServers()添加集群地址
config.useSingleServer()
.setAddress("redis://192.168.150.101:6379")
.setPassowrd("123321");
// 创建客户端
return Redisson.create(config);
}
}