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

在线上环境中,由于Redis资源耗尽导致机器压力过大,你会采取哪些策略来缓解和优化?

后端开发性能优化系统设计问题排查Redis

考察说明

考察候选人排查线上Redis资源瓶颈并制定优化方案的能力

回答思路

  1. 【回答框架 1】首先定位瓶颈,通过监控指标区分内存、CPU、网络或连接数等资源。使用INFO命令、slowlog和客户端统计,结合机器监控数据判断是容量不足、流量过大还是操作低效。
  2. 【回答框架 2】针对内存溢出,优化数据结构与过期策略:使用更紧凑的编码方式,如list用quicklist,hash用ziplist,设置合理TTL,使用LRU淘汰策略。若内存仍不足,考虑升级内存或使用持久化存储分担。
  3. 【回答框架 3】针对CPU高,排查有无大键、热键或慢查询。拆分大键,使用scan替代keys,减少O(N)命令,使用pipeline批量操作,避免阻塞。对热键可引入本地缓存或读写分离。
  4. 【回答框架 4】若流量过大,考虑增加Redis集群节点进行水平扩展,或者使用读写分离,将读流量分散到从节点。同时优化客户端连接池,减少不必要的连接建立。
  5. 【回答框架 5】在架构层面,结合业务场景评估是否所有数据都适合放Redis,可引入其他缓存层或者数据冷热分离,降低Redis压力。
  6. 【关键点 1】优先监控定位是内存、CPU还是连接数瓶颈
  7. 【关键点 2】优化数据结构和过期策略控制内存使用
  8. 【关键点 3】避免大键和慢命令,使用pipeline和scan
  9. 【关键点 4】通过集群或读写分离进行水平扩展
  10. 【关键点 5】结合业务合理设计缓存,必要时引入本地缓存
  11. 【易错点 1】不能直接扩大内存而忽视性能优化
  12. 【易错点 2】避免使用O(N)命令如keys,使用scan替代
  13. 【易错点 3】不要忽略持久化对性能的影响,如AOF重写