分布式缓存 Redis 之大厂面试汇总
一、缓存穿透、缓存雪崩、缓存击穿
Redis
面试毫无疑问,这个应该是最常遇见的吧。。。那我们就来看看业界是怎么处理这些问题的。
1、缓存穿透
一般的缓存系统,都是按照key
去缓存查询,如果不存在对应的value
,就应该去后端系统查找(比如 DB
)。
缓存穿透是指在高并发下查询key
不存在的数据,会穿过缓存查询数据库。导致数据库压力过大而宕机。
解决方案:
- 对查询结果为空的情况也进行缓存,缓存时间(
ttl
)设置短一点,或者该key
对应的数据insert
了之后清理缓存。
问题:缓存太多空值占用了更多的空间 - 使用
布隆过滤器
。在缓存之前在加一层布隆过滤器,在查询的时候先去布隆过滤器查询 key 是否存在,如果不存在就直接返回,存在再查缓存和DB
。