缓存命中率
缓存命中率基础概念
缓存命中率(Cache Hit Rate)用于衡量缓存系统性能的关键指标,表明系统直接从缓存获取所需数据的比例。
1 | 缓存命中率 = keyspace_hints / (keyspace_hits + keyspace_misses) |
其中的参数值可以通过redis 提供的 info 命令得到
1 | info Stats |
输出的信息如下
1 | ***** |
搜集与监控缓存命中率
- 使用 Redis 的 INFO Stats 获取 keyspace_hits 和 keyspace_misses,然后计算命中率。
- 可定期记录缓存命中率,并监控其变化趋势,比如绘图或通过监控系统展示。
- 在 Redis 可观测最佳实践中,命中率是核心性能指标之一,和延迟、每秒操作数并列监测。
提高缓存命中率的策略
- 聚焦热点业务
缓存高频访问且时效性要求低的热点数据(如配置字典、session、token 等),优先缓存,并加以预热。 - 缓存预热
系统启动或关键周期提前加载热点数据入缓存,避免首次请求未命中。 - 多级缓存
在 Redis 前加本地缓存(如 Guava Cache),未命中再访问 Redis,提升整体命中率并减轻 Redis 压力。 - 调整缓存粒度
缓存粒度越细(如按用户独立缓存),命中率通常更高;但复杂度也会增加,需平衡。 - 更新优先于删除/过期
当数据变更时,直接更新缓存比依赖过期机制更能保持命中率。 - 扩展缓存容量
当容量不足时容易触发淘汰,增大 Redis 内存或采用分布式缓存减轻压力