• 缓存怎么测试?


    1、缓存的介绍

    平时用的Redis缓存是一款高性能的内存型键值对(key-value)数据库,是高并发场景常用一款存储中间件,其主要用于:缓存热点数据,减少DB的请求IO

    其场景使用主要有:分布式锁,全局ID,计数器,限流,消息队列,购物车等

    2、缓存的使用

    Redis存储键值对,支持5种数据类型,String, HashList,SetZset,缓存一般和DB配合使用,其缓存与DB的交互:

    PS 部分场景可能存在查询缓存时,如缓存无数据,可能会直接返回空数据给客户端,不再去查询DB

    3、缓存的设计

    4、缓存的测试

    PS: 缓存的测试可从四个唯度进行测试:

     

    使用场景评审

    1 缓存使用场景的评审:

    • 评估业务场景是否真的需要缓存;

    2 评估缓存 DB 短期的数据短期暂不致对业务带来的影响;

    3 键值规范设计是否合理:

    • 请考 缓存设计 KEY-VALU的规范

    4 业务场景中缓存模式的选择:

    参考 缓存模式的选择

    5 缓存的更新策略:

    • 是否存在并发场景,是否在并发场景下出现脏数据的读
    • 参考缓存的更新策略,一般推荐先更新DB,再淘汰缓存

    6 业务使用的空间大小是否在最近的增长时有内存不够风险:

    7 评估缓存时间设置的合理性;

    缓存的功能测试

     

    缓存的特殊场景

    1 缓存超时:

    验证缓存查询达到超时后,未返回指定的数据,对系统的影响;强弱依赖

    2 缓存穿透

    不断查询一个DB和缓存中一定不存在的数据,验证返回数据为空;

    3 缓存雪崩:

    验证缓存 是否采用了相同的过期时间,如果缓存 大量在同一时间失效,验证系统功能是否正常,DBIO读取是否正常,其系统中DB性能指标是否正常;

    4 缓存击穿:

    缓存中的数据没有查询过,第一次高并发访问

    缓存中的一条数据刚好失效,进行高并发访问 ,校验功能是否正常,DB指标是否正常,其对应的性能指标是否正常;

    5 缓存预热:

    大批量缓存在同一时间点过期,验证缓存预热耗时及预期时机

    在缓存预期期间请求 更新接口和查询接口,验证返回数据的正确性

    6 缓存内存上限:

    验证缓存淘汰参数配置与预期是否一致:增加缓存到达最大内存限制时(通过修改redis.conf配置文件中配置最大可用内存值maxmemory),再次请求查询 ,数据返回是否正确,且缓存淘汰是否正确

    7 缓存服务异常

    验证关闭缓存服务,系统功能和性能的表现

    重启缓存,请求查询数据是否正确,DB数据与Redis数据是否一致;

    6 读写并发测试:

    并发请求缓存中的有的数据,验证返回数据是否正确,性能指标是否正常

    并发请求缓存中没有但DB有的数据,验证返回数据是否正确,性能指标是否正常

    并发请求缓存中和DB中也没有的数据,验证返回数据是否为空,性能指标是否正常;

    7 性能测试(redis-benchmark)

    单机和集群Reids的吞吐量

    对比不同存储类型的性

    开启和关闭持久化的吞吐量

    对比调优前后的吞吐量

    对比不同版本的Redis的吞吐量

    缓存 的监控

    缓存的命中率,评估缓存设计 是否达到预期

    监控CPU,内存使用率,及 CPU,内存使用异常

    监控Key值过大的阀值

    监控KEY是否存在频繁更新场景

    监控Value读取时间

     

  • 相关阅读:
    kubernetes(3)
    python基于PHP+MySQL的网上花卉鲜花销售购物网站
    何为量子计算机?
    智能穿戴终端设备安卓主板方案_MTK平台智能手表PCBA定制开发
    【问题解决】Android JDK版本不匹配导致崩溃踩坑记录
    ChatGPT:深度学习和机器学习的知识桥梁
    Win11无法将值写入注册表项如何解决?
    Maven
    【自动化营销】跨境电商高效进行WhatsApp营销技巧!
    MySQL数据库(表的CRUD基础操作(最常用))
  • 原文地址:https://blog.csdn.net/weixin_60664821/article/details/126619895