一、摘要
对redis服务本身进行压测,配置一个节点。如果是分片集群,将每个master节点同时压测。
二、部署
随着redis server 的安装自带上了。
三、参数
| 参数 | 说明 |
|---|---|
| -h | 连接的主机名/IP(默认是127.0.0.1) |
| -p | 连接的端口(默认是6379) |
| -s | socket连接方式 |
| -c | 并发连接数(默认是50) |
| -n | 请求总数(默认是100000) |
| -d | 以字节单位指定SET/GET值的长度 |
| --dbnum | 指定连接库ID(默认是0) |
| -k | 是否保留测试键值对,1是保留,0是不保留(默认值是1) |
| -r | SET/GET/INCR使用随机key,SADD使用随机值 |
| -P | 通过管道符传输请求 |
| -e | 如果返回错误,显示在标准输出上 |
| -q | 退出Redis,仅仅显示query/sec值 |
| --csv | 以CSV格式输出 |
| -l | 循环永久执行测试 |
| -t | 仅运行以逗号分隔的测试命令列表 |
| -I | idle模式,打开N个idle连接并等待 |
四、读测试
# 读性能压测,1000请求数,100并发
redis-benchmark -h <主节点IP> -p 6379 -a 123456 -t get -c 100 -n 10000
五、写测试
# 写性能压测,1000请求数,100并发
redis-benchmark -h <主节点IP> -p 6379 -a 123456 -t set -c 100 -n 10000
六、混合读写测试
# 混合读写压测,测试某些特定的命令,例如 GET 和 SET:
redis-benchmark -h <IP> -p 6379 -a 123456 -c 100 -n 10000 -t get,set
压测结束后的样例:
七、局限性
仅仅是对redis的压测,如果要业务压测,redis-benchmark 不支持。
八、参考
九、补充
redis-benchmark -h 172.25.188.41 -p 6379 -a 2ghlmvl_MT -t get -d 1048576 -c 8000 -n 10000000
redis-benchmark -h 172.25.188.43 -p 6379 -a 2ghlmvl_MT -t get -d 1048576 -c 8000 -n 10000000
redis-benchmark -h 172.25.188.36 -p 6379 -a 2ghlmvl_MT -t get -d 1048576 -c 8000 -n 10000000
redis-benchmark -h 172.25.188.33 -p 6379 -a 2ghlmvl_MT -t get -d 1048576 -c 8000 -n 10000000
redis-benchmark -h 172.25.188.38 -p 6379 -a 2ghlmvl_MT -t get -d 1048576 -c 8000 -n 10000000
redis-benchmark -h 172.25.188.35 -p 6379 -a 2ghlmvl_MT -t get -d 1048576 -c 8000 -n 10000000
# 1000w请求
# 100 并发,默认是50
redis-benchmark -h 172.25.188.43 -p 6379 -a 2ghlmvl_MT -t INCR -d 1048576 -c 800 -n 1000000
# 开发的redis ,800并发,
redis-benchmark -h 172.25.237.85 -p 6379 -t INCR -d 1048576 -c 800 -n 1000000
# 1000 并发,默认是50, -q 表示输出关键信息
redis-benchmark -h 172.25.237.87 -p 6379 -d 1048576 -c 1000 -n 10000000 -q
# 开发的redis ,1000并发,测试所有类型的命令
redis-benchmark -h 172.25.237.85 -p 6379 -d 1048576 -c 1000 -n 10000000 -q