面试题答案
一键面试- 合理设置缓存过期时间
- 原理:为缓存数据设置一个合适的过期时间,避免缓存数据长期占用空间且不更新。对于经常变化的数据,设置较短过期时间;对于相对稳定的数据,设置较长过期时间。这样能在数据准确性和缓存利用率之间找到平衡,新数据更新后,旧缓存过期,新请求可获取最新数据并存入缓存,提高命中率。
- 缓存预热
- 原理:在系统上线或启动阶段,预先将一些热点数据加载到Redis缓存中。这样在用户实际请求时,这些数据已经在缓存中,直接从缓存获取,大大提高缓存命中率,减少数据库等后端数据源的压力。
- 缓存穿透处理
- 原理:缓存穿透指查询一个不存在的数据,每次请求都绕过缓存直接到数据库。常见处理方法如布隆过滤器,它基于哈希函数,将所有可能存在的数据映射到一个位数组中。查询时先通过布隆过滤器判断数据是否可能存在,若不存在则直接返回,不会查询数据库,从而避免大量无效请求穿透缓存,提高缓存命中率。
- 缓存雪崩处理
- 原理:缓存雪崩指大量缓存数据在同一时间过期,导致大量请求直接访问数据库。可通过设置不同的过期时间,让缓存过期时间分散,避免集中过期;或者使用互斥锁,在缓存过期时,只允许一个请求去查询数据库并更新缓存,其他请求等待,从而防止大量请求同时穿透缓存,提高缓存命中率。
- 读写策略优化
- 原理:读操作优先从缓存获取数据,更新操作在更新数据库后,及时更新缓存或设置缓存过期。写后失效策略在更新数据时使相关缓存失效,下次读操作重新加载最新数据到缓存;读写都更新策略在更新数据时同时更新缓存。通过合理的读写策略,保证缓存数据的一致性和及时性,提高缓存命中率。