缓存问题
缓存穿透
查询不存在的key,会穿透缓存查询数据库,高并发的情况下,给数据库带来压力而宕机
解决方案
- 对查询结果为空的情况也进行缓存,混存ttl设置短一点,或者key 对应的数据insert 之后清理缓存,问题是:缓存太多空值占用了更多的空间
- 使用布隆过滤器,在缓存之前在加一层布隆过滤器,在查询的时候先去布隆过滤器查询key是否存在如果不存在就直接返回,存在再查缓存和DB
缓存雪崩
当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也会给后端系统比如DB 带来很大压力 突然间大量的key失效或者redis 重启,大量访问数据库,数据库崩溃
解决方案
- key