redis分布式锁解决秒杀业务下超卖问题
- 加入架包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<exclusions>
<exclusion>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<!-- 以后使用Redisson作为所有分布式锁 -->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.12.0</version>
</dependency>`
- 配置redis连接
spring.redis.host=localhost ## redis所在的服务器IP
spring.redis.port=6379 ## 端口
spring.redis.password= 123456##密码,我这里没有设置,所以不在这里插入代码片`
- 业务中代码实现案例
@GetMapping("/hello")
@ResponseBody
public String hello(){
RLock lock = redisson.getLock("my-lock");
try {
lock.lock();
System.out.println("加锁成功,执行业务方法..."+Thread.currentThread().getId());
Thread.sleep(30000);
} catch (Exception e){
}finally {
lock.unlock();
System.out.println("释放锁..."+Thread.currentThread().getId());
}
return "hello";
}