在数据缓存到redis等中间件,key缓存数据正好过期 却遭遇大量高并发请求访问同一个数据,这会给数据库造成巨大压力并拉低服务器处理速度,降低吞吐量。
为了解决这一问题,可以使用Redisson锁 ,原理:大量请求访问是只允许一个进程进到方法中并获得A锁,A锁已被占用,其他进程只有等待A锁被释放才能获得A锁。当第一个获得A锁的进程 拿到锁 查询数据库并返回数据,数据会被保存到redis 缓存数据key中。其他进程无需再次访问数据库,通过获得缓存数据返回。
1. 导入Redisson的依赖包
<!--redisson 分布式锁 --> <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.12.0</version> </dependency>
配置信息:
2.
依赖引入后:
添加Redisson 操作类 从容器引入。
@Autowired private RedissonClient redissonClient; //分布式锁