如何为redis-benchmark工具添加自定义命令(如xadd)以测试RPS性能?
给redis-benchmark添加XADD等流命令测试RPS的方法
方法1:用内置自定义参数(无需改源码)
redis-benchmark本身支持直接构造自定义命令,不用修改源码就能测XADD的性能:
基础测试写法:
直接指定自定义命令模板,用--自定义命令名传递完整Redis命令:redis-benchmark -n 100000 -c 50 \ --xadd_test "XADD mystream * field1 val1 field2 val2"这里
-n是总请求数,-c是并发连接数,*会自动生成唯一消息ID,符合真实场景。模拟动态业务数据:
要生成不同的字段值,用__rand_int__(随机整数)、__rand_string__(随机字符串)占位符:redis-benchmark -n 100000 -c 50 \ --xadd "XADD user_stream * uid __rand_int__:1:10000 name __rand_string__:10"每个请求的uid是1-10000的随机数,name是10位随机字符串,贴近真实流量。
简化输出:
加-q参数只看RPS结果:redis-benchmark -q -n 100000 -c 50 --xadd "XADD mystream * val __rand_int__:1:1000"
方法2:修改源码添加内置命令(长期使用)
如果想把XADD当成内置命令用-t xadd调用,改源码重新编译:
- 下载对应版本的Redis源码,打开
src/redis-benchmark.c - 找到
struct command数组(文件开头附近),加一行XADD的定义:
第三个参数是默认命令模板,可按需调整字段数量或占位符。{"xadd",0,"xadd mystream * field value",0,NULL,0,0,0,0,0,0}, - 重新编译:
make clean && make - 编译完成后直接用内置命令测试:
redis-benchmark -t xadd -n 100000 -c 50
测试注意事项
- 测试前执行
DEL mystream清理旧流数据,避免干扰结果 - 调整
-c和-n参数时,别超过Redis实例的承载能力 - 可配合
INFO stats查看Redis实时指标,验证测试结果
内容的提问来源于stack exchange,提问作者Lau
相关产品推荐
相关产品推荐

