zoukankan      html  css  js  c++  java
  • 关于如何提高缓存命中率(redis)

    一、缓存命中率的介绍

    命中:可以直接通过缓存获取到需要的数据。
    
    不命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作。原因可能是由于缓存中根本不存在,或者缓存已经过期。
    
    通常来讲,缓存的命中率越高则表示使用缓存的收益越高,应用的性能越好(响应时间越短、吞吐量越高),抗并发的能力越强。
    
    由此可见,在高并发的互联网系统中,缓存的命中率是至关重要的指标。

    二、如何监控缓存命中率

      redis提供了INFO这个命令,能够随时监控服务器的状态,只用telnet到对应服务器的端口,执行命令即可

    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)通过缓存预加载(预热)、合理调整缓存有效期的时间 (避免同时失效)、增加存储容量、调整缓存粒度、更新缓存等手段来提高命中率。

      对于时效性很高(或缓存空间有限),内容跨度很大(或访问很随机),并且访问量不高的应用来说缓存命中率可能长期很低,可能预热后的缓存还没来得被访问就已经过期了。

  • 相关阅读:
    allure2生成html报告
    H5如何测试?
    请描述什么是性能测试、什么是负载测试、什么是压力测试?
    Web/App端自动化测试对比
    如果给你一台电梯,请问你如何测试它
    PC、APP、H5三端测试的相同与不同
    App测试工具选择
    app测试和web测试的区别
    unittest单元测试框架详解
    Jmeter之逻辑控制器(Logic Controller)
  • 原文地址:https://www.cnblogs.com/chenhaoyu/p/11308753.html
Copyright © 2011-2022 走看看