run_bench.hash.sh 使用指南
- 脚本:
test-redis/run_bench.hash.sh
- 默认策略:
persist_no / persist_everysec / nopersist
- 测试模式:
set + prefill+get
- 默认参数:
REQ=1000000 KEYSPACE=1000000 PIPE=128 VSIZE=32 ROUNDS=5 RETRIES=3
运行示例
常用环境变量
| 变量 |
默认值 |
说明 |
ROUNDS |
5 |
每个策略的轮次 |
REQ |
1000000 |
单次 bench 请求数 |
KEYSPACE |
1000000 |
key 空间大小 |
PIPE |
128 |
pipeline 深度 |
VSIZE |
32 |
value 大小(字节) |
RETRIES |
3 |
单轮失败重试次数 |
SEED |
12345 |
随机种子基数 |
ALLOC |
mypool |
allocator |
KV_PORT |
8888 |
kvstore 端口 |
SET_CMD / GET_CMD |
RSET / RGET |
压测命令 |
大Key持久化协议复测(覆盖版)
- 时间口径:2026-03-07(本次重测)
- 参数:
requests=1000000 pipeline=128 keyspace=1000000 value-size=256
- 轮次:每种策略
5 轮
- 去异常规则:每个场景按
qps 对 5 轮做中位数偏差,剔除偏差最大 1 轮,再对剩余 4 轮取均值
- kvstore 源数据:
results/hash_bench_fair_summary_20260307_062549.csv
- redis 源数据:
results/redis_bigkey_summary_20260307_063158.csv
- kvstore 去异常结果:
results/hash_bench_fair_trimmed_20260307_062549.csv
- redis 去异常结果:
results/redis_bigkey_trimmed_20260307_063158.csv
kvstore 原始5轮
| 策略 |
模式 |
Round1 |
Round2 |
Round3 |
Round4 |
Round5 |
原始均值QPS |
原始均值us/op |
| persist_no |
set |
139895.00 |
138768.00 |
138867.00 |
143296.00 |
144388.00 |
141042.80 |
7.09 |
| persist_no |
get |
163764.00 |
164079.00 |
166415.00 |
163959.00 |
147881.00 |
161219.60 |
6.21 |
| persist_everysec |
set |
133067.00 |
126140.00 |
133430.00 |
139786.00 |
141145.00 |
134713.60 |
7.43 |
| persist_everysec |
get |
162076.00 |
165415.00 |
162180.00 |
163762.00 |
158226.00 |
162331.80 |
6.16 |
| nopersist |
set |
157950.00 |
143109.00 |
135043.00 |
152045.00 |
147233.00 |
147076.00 |
6.82 |
| nopersist |
get |
163381.00 |
169356.00 |
155890.00 |
164754.00 |
157550.00 |
162186.20 |
6.17 |
kvstore 去异常后(4轮均值)
| 策略 |
模式 |
剔除轮次 |
剔除QPS |
去异常均值QPS |
去异常均值us/op |
| persist_no |
set |
5 |
144388.00 |
140206.50 |
7.13 |
| persist_no |
get |
5 |
147881.00 |
164554.25 |
6.08 |
| persist_everysec |
set |
5 |
141145.00 |
133105.75 |
7.52 |
| persist_everysec |
get |
5 |
158226.00 |
163358.25 |
6.12 |
| nopersist |
set |
3 |
135043.00 |
150084.25 |
6.67 |
| nopersist |
get |
3 |
155890.00 |
163760.25 |
6.11 |
kvstore 协议开销(基线 nopersist,去异常后)
| 策略 |
set QPS变化 |
set us/op变化 |
get QPS变化 |
get us/op变化 |
| persist_no |
-6.58% |
+6.90% |
+0.48% |
-0.49% |
| persist_everysec |
-11.31% |
+12.74% |
-0.25% |
+0.16% |
Redis 原始5轮
| 策略 |
模式 |
Round1 |
Round2 |
Round3 |
Round4 |
Round5 |
原始均值QPS |
原始均值us/op |
| none |
set |
198673.00 |
211843.00 |
193900.00 |
208293.00 |
211071.00 |
204756.00 |
4.89 |
| none |
get |
225347.00 |
221000.00 |
218357.00 |
216466.00 |
214747.00 |
219183.40 |
4.56 |
| aof_no |
set |
144042.00 |
139615.00 |
140016.00 |
149925.00 |
150658.00 |
144851.20 |
6.91 |
| aof_no |
get |
210541.00 |
211713.00 |
202589.00 |
231251.00 |
402028.00 |
251624.40 |
4.24 |
| aof_everysec |
set |
143737.00 |
132998.00 |
136973.00 |
144448.00 |
142414.00 |
140114.00 |
7.14 |
| aof_everysec |
get |
212422.00 |
201051.00 |
211508.00 |
192190.00 |
209874.00 |
205409.00 |
4.87 |
Redis 去异常后(4轮均值)
| 策略 |
模式 |
剔除轮次 |
剔除QPS |
去异常均值QPS |
去异常均值us/op |
| none |
set |
3 |
193900.00 |
207470.00 |
4.82 |
| none |
get |
1 |
225347.00 |
217642.50 |
4.59 |
| aof_no |
set |
5 |
150658.00 |
143399.50 |
6.98 |
| aof_no |
get |
5 |
402028.00 |
214023.50 |
4.68 |
| aof_everysec |
set |
2 |
132998.00 |
141893.00 |
7.05 |
| aof_everysec |
get |
4 |
192190.00 |
208713.75 |
4.79 |
Redis 协议开销(基线 none,去异常后)
| 策略 |
set QPS变化 |
set us/op变化 |
get QPS变化 |
get us/op变化 |
| aof_no |
-30.88% |
+44.81% |
-1.66% |
+1.96% |
| aof_everysec |
-31.61% |
+46.27% |
-4.10% |
+4.36% |
简要结论
- 本次大 key(256)下,持久化开销主要体现在
set,get 相对更稳。
aof_no/aof_everysec 在 Redis 写路径的开销明显;kvstore 三策略在写路径也存在可见差异。
- 本报告已剔除每场景 1 个异常轮次,避免单点抖动主导结论。