• Redis学习--HGET和MGET测试


    性能测试

    同一门课程,会拆分为多个小班进行授课,每个小班会对于一个评分,课程负责人需要获取所有小班的评分并进行排名。
    假设100个课程,每个课程有100个小班,模拟100个并发请求课程所有小班评分数据,每个并发循环30000次。

    使用阿里云Redis进行压测,实例规格为2G集群版(2节点)

    方案1:将每个课程下每个小班的数据使用单独hash键来存放,按照课程下每个小班循环获取(HGETALL 1 KEY)

    峰值QPS: 52.1K/s
    峰值CPU: 34.0%
    峰值流量: 1.1MB/s
    执行耗时:30000*100*100/52100=5758秒
    

    方案2:将每个课程下所有小班的数据使用一个hash键来存放,按照课程批量获取所有小班数据(HGETALL 1 KEY)

    峰值QPS: 14.7K/s
    峰值CPU: 22.1%
    峰值流量: 25MB/s
    执行耗时:30000*100/14700=204秒
    

    方案3:将每个小班的评分使用string方式存储,按照课程下每个小班循环获取(GET 1 KEY)

    峰值QPS: 52.3k/s
    峰值CPU: 33.1%
    峰值流量: 2.55MB/s
    执行耗时:30000*100*100/52300=5736秒
    

    方案4:将每个小班的评分使用string方式存储,按照课程下所有小班进行批量获取(MGET 100 KEY)

    峰值QPS: 34.5k/s
    峰值CPU: 66.7%
    峰值流量: 61.8MB/s
    执行耗时:30000*100/34500=87秒
    

    性能分析

    • 使用HGETALL请求包含1个filed的键和请求包含100个filed的键的CPU消耗比约为1比2.3,但由于请求次数降低100倍,因此性能能提升约43倍。
    • 使用MGET批量请求100个键和使用GET请求1个键的CPU消耗比约为3.1比1,但由于请求次数降低100倍,因此性能约提升约30倍。

    PS: 如果针对排名问题,优先推荐使用SORTED SET来处理

  • 相关阅读:
    杭电OJ 输入输出练习汇总
    七月读书笔记
    情报分析报告阅读笔记
    情报研究与分析入门阅读笔记
    旁观者攻击
    域前置技术相关学习
    CC攻击和C2的区别
    DNS投毒学习分析总结
    数字证书2.0版本学习总结
    《在树洞里》-感悟
  • 原文地址:https://www.cnblogs.com/gaogao67/p/15093384.html
Copyright © 2020-2023  润新知