1.缓冲击穿:缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。
解决方案:bitmap建立布隆过滤器;缓存和数据库都读取不到的时候,设置一个空缓存,设置合理的过期时间;
2.缓存穿透:某个缓存突然失效,大量请求到数据库
解决方案:热点数据永远不过期;如果缓存过期,查询数据库时根据key加互斥锁,只允许一个线程请求数据库,请求成功后设置缓存。其它线程重试查询缓存;
3.缓存雪崩,大量key同时失效;
解决方案:key失效时间加随机值,不要同时失效;分布式
缓存一致性问题