数据库
首页 > 数据库> > Redis 作为数据库 — 使用 K6 进行速度测试

Redis 作为数据库 — 使用 K6 进行速度测试

作者:互联网

测试设置

这些测试是在我的M1 Pro Macbook Pro上进行的,具有32 GB的内存,连接到WiFi和电池电源。我正在使用 Jetbrains Rider 在发布模式下运行 Visualizer 微服务,在命令行中运行 Redis Stack,在 VSCode 中运行 Visualizer 前端,以及当前版本的 macOS Ventura。

数据摄取

这是在 Redis 中存储单个推文的代码

  varinternalId=await_tweetCollection.InsertAsync(tweetModel);

查看原始信息TweetDbService - 存储推文.cs由GitHub 托管 
这在专用微服务中运行,每次从 Twitter 的示例流中检索新推文时都会执行。在以后的文章中,我将介绍可视化工具的体系结构。

使用 RedisInsight,我可以看到,使用我当前的设置,我可以设法每秒发送大约 700 个命令,其中大部分是存储推文。

数据检索

检索数据由另一个微服务处理,该微服务仅从 Redis 读取数据。

使用K6,我编写了一个脚本,从 GraphQL API 检索 10 条推文。

  从“K6/http”导入http;
  导入{检查}从“K6”;
  import{Counter}from“k6/metrics”;
  import{htmlReport}from“https://raw.githubusercontent.com/benc-uk/k6-reporter/main/dist/bundle.js”;
  import{textSummary}from“https://jslib.k6.io/k6-summary/0.0.1/index.js”;
   
  导出常量请求=新计数器(“http_reqs”);
   
  导出常量选项 = {
  阶段:[
  { 目标:60,持续时间:“5s”},
  { 目标:30,持续时间:“1s”},
  { 目标:10,持续时间:“1s”},
  { 目标:0,持续时间:“2s”},
  ],
  };
   
  常量查询 = `
  query getFilteredTweets($filter: FindTweetsInputTypeQl!){
  推特 {
  查找(过滤器: $filter) {
 
  推文 {
  编号
  作者标识
  用户名
  对话标识
 
 
  发短信
  创建于
  geoLoc {
  纬度
  经度
  }
  实体 {
  主题标签
  提到
  }
  publicMetricsLikeCount
  publicMetricsRetweetCount
  publicMetricsReplyCount
  }
  }
  }
  }
  `;
  常量变量={过滤器:{页面大小:10,页数:1 } };
  letheaders={“Content-Type”:“application/json” };
   
  导出默认功能 () {
  constres=http.发布(
  “https://localhost:7083/graphql”,
  杰森。stringify({query:query,variables:variables}),
  { 标头:标头 }
  );
   
  constcheckRes=check(res, {
  “状态为 200”:(r)=>r。状态===200,
  });
  }
   
  这将导出为 HTML 作为文件名“result.html”,并使用文本摘要导出为 stdout
  利用句柄摘要回调通过 K6-REPORTER https://github.com/benc-uk/k6-reporter 导出为 HTML
  导出函数句柄摘要(数据) {
  返回 {
  “result.html”:htmlReport(data),
  stdout:textSummary(data,{indent:“ ”,enableColors:true}),
  };

 

标签:redis,数据库,测试,托管,设置, 内存,WiFi,电池,电源
来源: