我正在使用基准测试工具测试Redis (版本: 0.8.8.384),以及本地包含在zip包中的redis-server.exe。我使用以下命令测试keyspace_length:redis-benchmark -t set,get -n 4 -c 1 -d 888 -r 1000
我已经设法在本地使用.pcap捕获了一个跟踪器( RawCap.exe )。我注意到的是,在SET命令、中发送的键与GET命令中的键不匹配。我希望使用的密钥存储在本地的某个地方,然后从GET命令中检索,以查询每个随机密钥的值。
我是不是遗漏了什么?
提前感谢!
发布于 2017-02-22 13:13:08
这种行为似乎是预期的,因为您只能为GET命令运行一个GET:
redis-benchmark -t get -n 4 -c 1 -d 888 -r 1000
====== GET ======
4 requests completed in 0.00 seconds
1 parallel clients
888 bytes payload
keep alive: 1
100.00% <= 0 milliseconds
4000.00 requests per second因此,-t中指定的每个命令都是独立测试的。
编辑
您可以传递一个lua脚本来测试set/get中的相同键。午餐后研究后的一些想法:)
MONITOR上打开redis-cli,以确定正在发生什么。重要:这将扼杀您的基准测试,只需将其设置为使用少量测试(例如redis-benchmark -n 10)查看实际命令;MULTI/EXEC块中一样;-r 1000 (例如),可以锁定两个命令使用的单个随机数。-r参数定义了使用的随机整数的范围。如果不指定__rand_int__ 参数(在监视时可以看到这一点),则将无法工作;MONITOR之后,您可以看到,对于更大的-n值,模拟速度似乎更快。尝试使用-n 10和-n 1000,看看这是否成立。剧本:
redis-benchmark -r 10000 -n 1000 eval "redis.call('set',KEYS[1],'xpto') return redis.call('get', KEYS[1])" 1 __rand_int__一个示例MONITOR输出:
1487868918.656881 [0 127.0.0.1:50561] "eval" "redis.call('set',KEYS[1],'xpto') return redis.call('get', KEYS[1])" "1" "000000009355"
1487868918.657032 [0 lua] "set" "000000009355" "xpto"
1487868918.657051 [0 lua] "get" "000000009355"https://stackoverflow.com/questions/42392268
复制相似问题