提高缓存命中率

文章目录

一、命中率介绍

  • 命中率:可以从缓存获得需要的数据
  • 未命中率:无法从缓存获取到想要的数据,而导致需要从数据库中或者其他操作获取到数据。

原因是缓存不存在或者缓存已过期

二、如何计算命中率

通过redis提供的info命令查看参数

命令:

127.0.0.1> info

输出:

expired_keys:2061008
evicted_keys:0
keyspace_hits:19528495
keyspace_misses:2915371

计算公式:命中率=击中数量/(keyspace_hits(击中数量)+keyspace_misses(未击中数量))

良好的系统可以保持命中率在95%以上

三、影响提高命中率的因素及方案

1. 业务场景和需求

缓存适合做“读多写少”的场景。反之,数据放进缓存就不合理了。业务场景和需求要求缓存的时效性,也会影响缓存的更新策略和更新时间,即时效性越低越适合做缓存,缓存时间越长,其命中率就越高

2. 缓存设计(粒度和策略)

粒度越小,命中率越高。粒子指的是存储对象的单位,如存储用户信息,存储单个对象和存储所有对象的集合相比,前者粒子较小。因为当一个用户对象发生变化时,都需要移除或更新缓存。此外,缓存的更新/过期策略也会影响命中率,当数据发生变化时,更新缓存会比移除缓存命中率更高。

3. 缓存容量和基础设施

如果缓存的容量有限,也容易导致缓存失败或者失效。而选择缓存的架构也是可以提高命中率,因为单继缓存毕竟没有集群分布式缓存容易扩展。其效率和稳定性也存在差异。

4. 其他因素

当缓存节点发生故障时,需要避免缓存失效并最大程度降低影响,这种情况就要用到redis的哨兵模式+redis的主从来解决了。

    原文作者:spydxk
    原文地址: https://blog.csdn.net/qq_36910975/article/details/105751216
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞