感觉这个被问烂了
面试官:聊聊什么是缓存穿透和雪崩
我:ok
缓存穿透:
一般是黑客故意去请求缓存中不存在的数据,导致所有的请求都落到数据库上,造成数据库短时间内承受大量请求而崩掉。
- 在接口做校验
- 存null值(缓存击穿加锁)
- 布隆过滤器拦截: 将所有可能的查询key先映射到布隆过滤器中,查询时先判断key是否存在布隆过滤器中,存在才继续向下执行,如果不存在,则直接返回。布隆过滤器将值进行多次哈希bit存储,布隆过滤器说某个元素在,可能会被误判。布隆过滤器说某个元素不在,那么一定不在。
缓存雪崩:
缓存同一时间大面积的失效,所以,后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉。
- 使用 Redis 高可用架构:使用 Redis 集群来保证 Redis 服务不会挂掉
- 缓存时间不一致,给缓存的失效时间,加上一个随机值,避免集体失效
- 限流降级策略:有一定的备案,比如个性推荐服务不可用了,换成热点数据推荐服务