面试题答案
一键面试缓存架构选型
- 集中式缓存:如 Redis Cluster,适合简单易管理场景,有较好性能和扩展性。它通过分片机制将数据分布在多个节点,支持动态扩展节点。
- 分布式缓存:如 Memcached,以其高性能和简单协议适用于高并发读写。但它不支持持久化,数据存储基于内存,重启会丢失数据。在大规模复杂业务中,可考虑将两者结合,热数据放 Redis,冷数据放 Memcached。
数据分区
- 哈希分区:通过哈希函数将数据映射到不同节点,优点是分布均匀,缺点是节点增减时数据迁移量大。可采用一致性哈希算法优化,使节点变动时只有少量数据迁移。
- 按业务分区:根据业务模块或数据类型分区,便于管理和维护,如用户相关数据放一个分区,订单相关放另一分区。
缓存穿透
- 布隆过滤器:在查询缓存前,用布隆过滤器判断数据是否存在,不存在则直接返回,避免查询后端数据库。布隆过滤器存在一定误判率,但可通过调整参数降低。
- 缓存空值:查询数据库不存在的数据,也在缓存中设置空值,并设置较短过期时间,防止缓存穿透。
缓存雪崩
- 设置随机过期时间:避免大量缓存同时过期,将缓存过期时间设置为一个随机范围,分散过期时间。
- 使用二级缓存:主缓存失效时,从二级缓存获取数据,减轻数据库压力。二级缓存可采用不同过期策略。
高可用
- 主从复制:Redis 支持主从复制,主节点数据更新同步到从节点,从节点提供读服务,提高系统读性能和可用性。当主节点故障,可手动或自动将从节点提升为主节点。
- 哨兵模式:自动监控主从节点状态,主节点故障时自动进行故障转移,选举新主节点,保障系统高可用。
- 集群模式:如 Redis Cluster,数据分布在多个节点,每个节点既是数据存储节点也是路由节点,提高系统扩展性和可用性。
优化应对高并发、大数据量场景
- 读写分离:利用主从架构,主节点写,从节点读,分散读压力。
- 批量操作:批量读取和写入缓存数据,减少网络开销。
- 异步更新:缓存更新操作异步化,减少对业务线程阻塞,提高系统并发处理能力。
- 数据压缩:对大数据量进行压缩存储,减少缓存空间占用,提高数据传输效率。