FunTester测试框架Redis性能测试实践#yyds干货盘点#

【FunTester测试框架Redis性能测试实践#yyds干货盘点#】学向勤中得,萤窗万卷书。这篇文章主要讲述FunTester测试框架Redis性能测试实践#yyds干货盘点#相关的知识,希望能为你提供帮助。
经历过FunTester框架Redis压测预备, 下面就应该进入实践阶段了,首先呢,先分享一个对Redis里面不停地添加key-value的测试用例。
思路基本的用例设计思路跟之前的压测是一致的,就是一个线程去执行一个任务,然后不停地去做某个事情,然后用线程池去执行多个任务,然后最终收集汇总结果。
就我自己粗浅的理解,ready使得连接词的获取以及释放和http协议的连接词使用类似原理也类似就是先去获取一个连接,然后再去做一些操作,然后再去释放连接连接,最终会在连接词里面进行一个状态的管理框架都提供了默认的管理机制这里使用。
测试用例 java版本

/** * redis添加key-value性能测试用例 */ public class RedisPerTest extends SourceCode public static final String host = "FunTester隐藏地址"; public static final int port = 6379; public static RedisBase drive; public static void main(String[] args) drive = new RedisBase(host, port); drive.index = 1; RUNUP_TIME = 0; drive.set("fun" + StringUtil.getString(10), "FunTester", 100); FunTester funTester = new FunTester(100); Concurrent concurrent = new Concurrent(funTester, 400,"redis添加key-value性能测试用例"); concurrent.start(); drive.close(); private static class FunTester extends FixedThread public FunTester(int limit) super(null, limit, true); @Override protected void doing() throws Exception drive.set("fun" + StringUtil.getString(10), "FunTester", 100); @Override public ThreadBase clone() return new FunTester(limit);

Groovy版本同上。
控制台输出
INFO-> 当前用户:oker,工作目录:/Users/oker/IdeaProjects/funtester/,系统编码格式:UTF-8,系统Mac OS X版本:10.16 INFO-> redis连接池IP:106.53.152.151,端口:6379,超时设置:5000 INFO-> =========预热完成,开始测试!========= INFO-> Redis测试进度:▍▍▍▍▍▍▍▍▍14% ,当前QPS: 1605 INFO-> Redis测试进度:▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍23% ,当前QPS: 1415 INFO-> Redis测试进度:▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍35% ,当前QPS: 1632 INFO-> Redis测试进度:▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍46% ,当前QPS: 1613 INFO-> Redis测试进度:▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍57% ,当前QPS: 1255 INFO-> Redis测试进度:▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍69% ,当前QPS: 1511 INFO-> Redis测试进度:▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍80% ,当前QPS: 1653 INFO-> Redis测试进度:▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍92% ,当前QPS: 1404 INFO-> 线程:Redis测试30,执行次数:100,错误次数: 0,总耗时:25.874 s INFO-> 线程:Redis测试11,执行次数:96,错误次数: 0,总耗时:25.888 s INFO-> 线程:Redis测试366,执行次数:98,错误次数: 0,总耗时:25.744 s 中间省略五百行日志 INFO-> 线程:Redis测试377,执行次数:98,错误次数: 0,总耗时:26.049 s INFO-> 线程:Redis测试71,执行次数:98,错误次数: 0,总耗时:26.21 s INFO-> 线程:Redis测试388,执行次数:98,错误次数: 0,总耗时:26.089 s INFO-> Redis测试进度:▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍100% INFO-> Redis测试QPS变化曲线见下图INFO-> 总计400个线程,共用时:26.252 s,执行总数:38,905,错误数:0,失败数:0 INFO-> 数据保存成功!文件名:/Users/oker/IdeaProjects/funtester/long/data/Redis测试021516_400 INFO-> ~?~~?~~?~~?~~?~~?~~?~~?~~?~~?~ JSON ~?~~?~~?~~?~~?~~?~~?~~?~~?~~?~ > >① . "rt":267, >① . "failRate":0.0, >① . "threads":400, >① . "deviation":"1.08%", >① . "errorRate":0.0, >① . "executeTotal":38905, >① . "qps2":1481.9823251561786, >① . "total":38905, >① . "qps":1498.1273408239701, >① . "startTime":"2021-09-02 15:16:35", >① . "endTime":"2021-09-02 15:17:01", >① . "mark":"Redis测试021516", >① . "table":"eJztk8sKgkAUQPeB/3A/QMFMWvgZ0Q8IDiQ0Fk1BLXtR0Lr5jVb90Cyiz+j2wB5UWj6m4A4XdKPnnHE0KpBuNVgQit12td+swbVt6Ld6zA9SPmxUjPecBhPdTiQYNEPOPBhagvVCvw3RgJswsjjC/SiJkezBwwjO7/IcpwZcmNwfem61jrc5VGRdSi5xUpUQpSyKkjOcckgnRNEkJcc45dFuMYXSlJzjlENUcoKDlwXOc2S+5PirXU5jIjc3izh1inPd5A8FMljF6fcel43IUedj4/dmWgS/KHo8Wq//ov+8HAt/QIMKqZAK9WtQIRVSoX4NKqRCKtSvQYVUSIX6NQotPAA24o0Q" > ~?~~?~~?~~?~~?~~?~~?~~?~~?~~?~ JSON ~?~~?~~?~~?~~?~~?~~?~~?~~?~~?~ INFO-> Redis测试 400 thread见下图Process finished with exit code 0

FunTester测试框架Redis性能测试实践#yyds干货盘点#

文章图片

FunTester测试框架Redis性能测试实践#yyds干货盘点#

文章图片

总结总体来讲,还是比较简单的,下期会测试一下多操作相关性或者集合value的场景,还有Redis自增value。在跟同行交流的时候,他们说平时工作中很难遇到直接对Redis进行测试的场景。但是技能的话,做一些储备还是好的。毕竟不知道什么时候就用的上了。

    推荐阅读