后端岗位面试题更新 2026-08-05

请解释 Redis 与 Caffeine 各自的特点,并结合你在云图库项目中的实践,说明如何基于这两者设计并实现多级缓存架构。

后端开发系统设计技术原理方案权衡Redis

考察说明

考查对常用缓存组件的理解及在项目中构建多级缓存的实践能力。

回答思路

  1. 【回答框架 1】Redis 是内存数据库,支持多种数据结构、持久化、集群和高可用,适合分布式环境下的共享缓存。Caffeine 是本地缓存库,基于 Java 开发,拥有高命中率和完善的过期策略,适合单机内的高速缓存。
  2. 【回答框架 2】多级缓存通常将 Caffeine 作为一级缓存,Redis 作为二级缓存。查询先访问 Caffeine,未命中则访问 Redis,再未命中才查询数据库,并将数据回填到各级缓存。
  3. 【回答框架 3】在云图库项目中,图片元数据与热点数据使用该方案。通过 Caffeine 减少对 Redis 的访问,降低网络开销和 Redis 压力;通过 Redis 保证多实例间的数据一致性。
  4. 【回答框架 4】需要解决缓存一致性,采用缓存更新策略如 Cache Aside Pattern,先更新数据库再删除缓存,并设置合理的 TTL。同时要考虑缓存穿透、击穿、雪崩问题,可使用空值缓存、互斥锁和随机过期时间等手段缓解。
  5. 【关键点 1】Redis:分布式共享缓存,支持持久化与集群;Caffeine:本地进程内缓存,性能更高但不可跨实例共享。
  6. 【关键点 2】多级缓存典型层次:Caffeine -> Redis -> 数据库,逐级回填。
  7. 【关键点 3】缓存一致性可采用先更新数据库后删除缓存的策略,并设置 TTL 兜底。
  8. 【关键点 4】需防御缓存穿透、击穿、雪崩,可用空值缓存、互斥锁、随机过期时间等方法。
  9. 【易错点 1】忽略缓存一致性:只更新缓存不更新数据库,或先删缓存后更新数据库可能造成数据不一致。
  10. 【易错点 2】未考虑缓存雪崩:所有缓存同时过期会导致数据库压力骤增,应使用随机过期时间。
  11. 【易错点 3】过度依赖本地缓存:在多实例环境中可能导致各实例数据不一致,需要合理设计失效机制。