文章目录
一、介绍
当一种请求,总是能越过缓存,调用数据库,就是缓存穿透。
比如当请求一个数据库没有的数据,那么缓存也不会有,然后就一直请求,甚至高并发去请求,对数据库压力会增大。
二、方案介绍
- 如果
key
具有某种规则,那么可以对key增加校验机制,不符合直接返回。 Redisson
布隆过滤器- 逻辑修改,当数据库没有此数据,以
null
为value
,也插入redis
缓存,但设置较短的过期时间。
三、Redis Docker部署
docker-compose示例如下,redis.conf从这里下载
redis:
container_name: redis
image: redis:7.2
volumes:
- ./redis/redis.conf:/usr/local/etc/redis/redis.conf
ports:
- "6379:6379"
command: [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
四、SpringBoot3 Base代码
1. 依赖配置
<!-- redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- redis 连接线程池 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.11.1</version>
</dependency>
<!-- redisson -->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.24.3</version>
</dependency>
spring:
data:
redis:
host