一 缓存穿透
- 什么是缓存穿透
访问某一key的时候,该key不在redis中,也不在db中,因此当非法用户频繁请求该key的时候,每一次请求,都直接穿过了redis,都最终落在的db上,从而造成宕机,影响整个系统,这种现象称之为缓存穿透 - 处理方案
- 把空的数据也缓存起来,比如空字符串,空对象,空数组
- 布隆过滤器。使用此方案,需要考虑以下几个问题:有误判率;删除困难;代码复杂
二 缓存雪崩
- 什么是缓存雪崩
每一个key存在过期时间,当某一时刻,大量的key失效,此时又有较大的访问量,则大量请求会直接打到数据库,造成数据库服务器宕机,这种现象称之为缓存雪崩,缓存雪崩无法避免,但可以预防 - 处理方案
- 设置key永不过期
- 过期时间错开
- 多缓存结合。例如加一个memcache,先访问redis,若没有再访问memcache(mem中key过期时间更长),再没有则访问db
- 采购第三方redis。例如aliyun的云redis