今天在优化项目时,觉得有必要使用分布式锁,防止多扣或少扣库存,具体的使用场景这里不再赘述,面试时有时候会问到什么Lock没想明白分布式部署还会用到他?我是没用过不好意思。
我使用的是redis的分布式锁,之前也集成过redisson,两种方式差不多,个人感觉第一种会比redisson简单些,使用上模式基本上差不多。
配置参考代码:
pom文件引入依赖:
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-redis</artifactId>
</dependency>
application.properties中添加redis配置:
# Redis
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=
配置一个配置类:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.integration.redis.util.RedisLockRegistry;
/**
* desc:Redis锁配置类
*
* @author: LJJ
* @date: 2022/10/11 19:53 下午
* @version: 1.0
*/
@Configuration
public class RedisLockConfig {
@Bean
public RedisLockRegistry redisLockRegistry(RedisConnectionFactory redisConnectionFactory) {
return new RedisLockRegistry(redisConnectionFactory, "redis-lock");
}
}
实际使用:
redis中查看锁的效果图:
参考地址:通过SpringBoot更优雅的实现分布式锁(Spring Integration)_Freelance developer的博客-优快云博客_springboot 分布式锁