缓存命中率

缓存命中率基础概念

缓存命中率(Cache Hit Rate)用于衡量缓存系统性能的关键指标,表明系统直接从缓存获取所需数据的比例。

1
缓存命中率 = keyspace_hints / (keyspace_hits + keyspace_misses)   

其中的参数值可以通过redis 提供的 info 命令得到

cli
1
info Stats

输出的信息如下

cli
1
2
3
4
5
*****
keyspace_hits:101044434
keyspace_misses:6804548
*****

搜集与监控缓存命中率

  • 使用 Redis 的 INFO Stats 获取 keyspace_hits 和 keyspace_misses,然后计算命中率。
  • 可定期记录缓存命中率,并监控其变化趋势,比如绘图或通过监控系统展示。
  • 在 Redis 可观测最佳实践中,命中率是核心性能指标之一,和延迟、每秒操作数并列监测。

提高缓存命中率的策略

  • 聚焦热点业务
    缓存高频访问且时效性要求低的热点数据(如配置字典、session、token 等),优先缓存,并加以预热。
  • 缓存预热
    系统启动或关键周期提前加载热点数据入缓存,避免首次请求未命中。
  • 多级缓存
    在 Redis 前加本地缓存(如 Guava Cache),未命中再访问 Redis,提升整体命中率并减轻 Redis 压力。
  • 调整缓存粒度
    缓存粒度越细(如按用户独立缓存),命中率通常更高;但复杂度也会增加,需平衡。
  • 更新优先于删除/过期
    当数据变更时,直接更新缓存比依赖过期机制更能保持命中率。
  • 扩展缓存容量
    当容量不足时容易触发淘汰,增大 Redis 内存或采用分布式缓存减轻压力