缓存不是免费午餐,以下场景它没用甚至有害:

  • 数据几乎不被重复访问:扫描式查询、一次性报表,缓存命中率趋近于零,只白占内存。
  • 写多读少:缓存刚写入就被更新,频繁失效,命中率低还平白增加写路径开销。
  • 强一致性要求:股价、库存、余额这类必须实时准确的数据,缓存与源之间的任何窗口期都可能造成超卖或错误展示。
  • 数据本身已经很快:本地小字典、走索引的简单主键查询,缓存层增加的序列化与网络开销反而更慢——缓存访问本身不在内存里时(如远程 Redis 对本地计算),要先量后上。
  • 缓存放大了故障面:缓存集群宕机引发雪崩(流量全部打到数据库)、热点 key 击穿、空结果不缓存导致穿透;为了防这些又要引入互斥重建、布隆过滤器等复杂度。
  • 内存挤占:大对象缓存挤掉应用堆或引发 GC 问题。

判断原则:先量化命中率与收益,缓存只在“读多写少、可容忍短暂不一致、重建成本高”三者同时成立时才是净收益。易错点:把缓存当默认组件而非优化手段,是过度设计的常见形态。