redis-提高缓存命中
缓存命中率
- 命中:可以直接通过缓存获取到需要的数据。
- 不命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作。原因可能是由于缓存中根本不存在,或者缓存已经过期。
通常来讲,缓存的命中率越高则表示使用缓存的收益越高,应用的性能越好(响应时间越短、吞吐量越高),抗并发的能力越强。由此可见,在高并发的互联网系统中,缓存的命中率是至关重要的指标。
监控缓存命中率
127.0.0.1> info
keyspace_hits:14414110
keyspace_misses:3228654
used_memory:433264648
expired_keys:1333536
evicted_keys:1547380
通过计算hits和miss,我们可以得到缓存的命中率:14414110 / (14414110 + 3228654) = 81% ,一个缓存失效机制,和过期时间设计良好的系统,命中率可以做到95%以上
提高缓存命中率的方法
- 尽可能的聚焦在高频访问且时效性要求不高的热点业务上(如字典数据、session、token)时效性:时效性越低意味着缓存时间越长,缓存时间越长,命中率越高
- 通过缓存预加载(预热):提前将数据加载到缓存中
- 合理调整缓存有效期的时间 :避免同时失效
- 加存储容量:容量不足时会触发Redis内存淘汰机制
- 调整缓存粒度:通常情况下,缓存粒度越小,命中率越高,如单个用户和所有用户比较