一、概念
缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,如果从数据库查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。造成缓存穿透!!!
当不法分子利用不存在的key对其频繁请求,可能DB就要挂掉了!!!
二、解决办法
- 布隆过滤器:将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被 这个bitmap拦截掉,从而避免了对底层存储系统的查询压力
- 将空值进行缓存,设置过期时间
- 对字段进行加密
备注:
对字段进行加密举例:
- https://test.com/api?status=123 加密成:https://test.com/api?status=U2FsdGVkX19W0fj4iIFTfpeoTyzukM2FDN9xsx8cxCk=
对其进行验证!!!不符合直接不从数据库查询!!!