zoukankan      html  css  js  c++  java
  • 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来处理

  • 相关阅读:
    IT学习 程序员 学习网址收藏
    PHP地图上的点文字标注
    php 三种文件下载的实现
    10个免费的jQuery富文本编辑器
    Docker Swarm(四)Volume 数据(挂载)持久化
    Docker Swarm(三)Service(服务)分配策略
    Docker Swarm(二)常用命令
    Docker Swarm(一)集群部署
    Linux——Shell脚本参数传递的2种方法
    Linux——系统时间、开机时间
  • 原文地址:https://www.cnblogs.com/gaogao67/p/15093384.html
Copyright © 2011-2022 走看看