Redis redis-benchmark test介绍
什么是benchmark test
benchmark trest是指通过设计科学的测试方法、测试工具和测试系统,实现对一类测试对象的某项性能指标进行定量的和可对比的测试。
例如我们测试redis数据库,我们要通过设置一定的并发量,然后每个并发有多少个请求,然后再针对redis每个命令例如:set/get/incr/lpush等命令进行测试。通过这样的测试下来,我们可以对当前数据库的状态有一个基本的了解。
为什么做要benchmark test
1)首次安装
例如我们要使用redis数据库,我们要知道它在我们服务器上运行的状态是否能达到我们想要的需求。
2)验证修改
当我们修改了某个参数后,如果该参数可能对性能有影响,我们可以在修改之前执行一次benchmarktest,然后修改参数,再次执行benchmarktest,然后对比两次的结果,看对性能有好的优化,还是负面效果。
如何开展benchmark test
准备工作:首先我们要将必须的实验环境准备好。例如 redis测试。我们要准备好服务器,然后安装并配置好数据库,然后确保数据库在运行状态。
进行测试:当准备工作做好之后,我们要开始我们的测试。通过测试工具我们执行相应的测试命令。这样就可以完成测试。
重复测试:需要注意的是,benchmarktest一般都要做两次以上,为了防止其他应用对我们测试的影响,我们要进行二次验证。
总结结果:当我们执行两次或以上benchamark之后,我们要对测试的结果进行整理,然后进行对比总结出我们的测试结果。最后对测试的结果进行留底存放,用来后面进行对比。
redis benchmark 介绍
redis的benchmark是当我们安装完redis之后官方自带的一个测试组件redis-benchmark,通过这个组件,我们可以针对redis制定相应的测试。
redis-benchmark 语法介绍:
[root@node1 bin]# redis-benchmark --help Usage: redis-benchmark [-h <host>] [-p <port>] [-c <clients>] [-n <requests]> [-k <boolean>] -h <hostname> 指定redis测试服务器 -p <port> 指定redis服务的端口 -s <socket> 指定redis socket文件 -a <password> 指定redis密码 -c <clients> 指定测试的并行数 -n <requests> 指定测试的请求数量 -d <size> SET/GET 命令的值bytes单位 默认是2 --dbnum <db> 指定redis的某个数据库,默认是0数据库 -k <boolean> 指定是否保持连接 1是保持连接 0是重新连接,默认为 1 -r <keyspacelen> 指定get/set的随机值的范围。-P <numreq> 管道请求测试,默认0没有管道测试 -e 如果有错误,输出到标准输出上。 -q 静默模式,只显示query/秒的值 --csv 指定输出结果到csv文件中 -l 指定是否一直运行test -t <tests> 指定需要测试的命令,以逗号分隔,
测试实验:
Run the benchmark with the default configuration against 127.0.0.1:6379: $ redis-benchmark Use 20 parallel clients, for a total of 100k requests, against 192.168.1.1: $ redis-benchmark -h 192.168.1.1 -p 6379 -n 100000 -c 20 Fill 127.0.0.1:6379 with about 1 million keys only using the SET test: $ redis-benchmark -t set -n 1000000 -r 100000000 Benchmark 127.0.0.1:6379 for a few commands producing CSV output: $ redis-benchmark -t ping,set,get -n 100000 --csv Benchmark a specific command line: $ redis-benchmark -r 10000 -n 10000 eval 'return redis.call("ping")' 0 Fill a list with 10000 random elements: $ redis-benchmark -r 10000 -n 10000 lpush mylist __rand_int__
结果分析:
Summary: throughput summary: 57012.54 requests per second 吞吐量总结 latency summary (msec): 各维度总结 avg min p50 p95 p99 max 0.255 0.096 0.199 0.407 1.047 101.631 ====== GET ====== 测试的命令 100000 requests completed in 1.68 seconds 完成时间 20 parallel clients 并行数量 3 bytes payload 每个set指定多少个bytes keep alive: 1 是否keepalive host configuration "save": 3600 1 300 100 60 10000 host configuration "appendonly": no multi-thread: no 是否多线程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?