1.redis缓存穿透
缓存没有该数据并且数据库中也没有该数据, 这是如果有大量的恶意请求来访问这种数据时,这些请求穿过缓存,到达数据库。
如何解决:
1.如果数据库中不存在该数据时,往缓存中存放一个空对象。该对象什么也不做。(缓存中会存在大量的冗余数据。设
置很短的过期时间)。
2.
使用布隆过滤器。理解为一个容器
把数据库中的所有数据
id
放入到布隆过滤器中
![](https://i-blog.csdnimg.cn/blog_migrate/1f3228d3c8a2bd4eb22438be8bb90729.png)
2.分布式锁
sspringboot项目中:application.properties:
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/distrinct-lock?serverTimezone=UTC
mybatis.mapper-locations=classpath:/mapper/*.xml
spring.redis.host=192.168.67.10
spring.redis.port=6379
mapper:
service:
entry:
.xml:
controller:
使用postman进行测试:
控制台测试结果: