缓存穿透是指缓存和数据库中都没有的数据,导致所有的请求都落到数据库上,造成数据库短时间内承受大量请求而崩掉。
用户-》查询-》查询不到直接库中返回;
解决方案:
接口层增加校验,如用户鉴权校验,id做基础校验,id《=0的直接拦截。
从缓存中取不到的数据,在数据库中也没有取到,这时也可以将key-null写入,缓存有效时间可以设置短一些,这样可以防止同一个id进行暴力攻击。
布隆过滤器
在读取缓存前,先读取布隆过滤器,
实现原理:进行hash通过和长度取模计算出对应的位置,判断是否可以通过。
有一个缺点,可能会出现误判,可以通过双hash进行判断。