首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用-r <keyspacelen>设置的REDIS //Benchmark工具// Keys在GET中不匹配

使用-r <keyspacelen>设置的REDIS //Benchmark工具// Keys在GET中不匹配
EN

Stack Overflow用户
提问于 2017-02-22 13:02:35
回答 1查看 1K关注 0票数 1

我正在使用基准测试工具测试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命令中检索,以查询每个随机密钥的值。

我是不是遗漏了什么?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-22 13:13:08

这种行为似乎是预期的,因为您只能为GET命令运行一个GET

代码语言:javascript
复制
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)查看实际命令;
  • 因为您正在加载lua脚本,所以每次都要执行原子,就像这些命令位于MULTI/EXEC块中一样;
  • 通过指定__rand_int__参数 -r 1000 (例如),可以锁定两个命令使用的单个随机数。-r参数定义了使用的随机整数的范围。如果不指定__rand_int__ 参数(在监视时可以看到这一点),则将无法工作;
  • 关闭MONITOR之后,您可以看到,对于更大的-n值,模拟速度似乎更快。尝试使用-n 10-n 1000,看看这是否成立。
  • 阅读https://redis.io/topics/benchmarks :)

剧本:

代码语言:javascript
复制
redis-benchmark -r 10000 -n 1000 eval "redis.call('set',KEYS[1],'xpto') return redis.call('get', KEYS[1])" 1 __rand_int__

一个示例MONITOR输出:

代码语言:javascript
复制
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"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42392268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档