我正在尝试对我的redis SUNION命令进行基准测试。 基准测试时,其中一组包含约1000个元素,其他包含约10个元素。
每个调用的执行顺序约为0.52毫秒。
这是理想的性能还是我错过了conf文件中的某些调整设置。
我正在尝试使用基本的set操作在对象上实现标签过滤。
对于前。
obj1 -> {id - 1 colour red location x}
obj1 -> {id - 1 colour red location x}
obj2 -> { id - 2 colour yellow location y}
obj3 -> { id - 3 clolour red location y}
为了存储,我正在使用集来存储每个维度的对象ID。因此
colour:red -> {1,3}
colour:yellow -> {2}
location:x -> {1}
location:y -> {2,3}
这使我可以在api之上公开api: 位置x上红色的对象 任何位置都呈红色的物体
使用我已经使用流水线实现的联合交集diff,其中的每一个实际上为我转换为多组操作。
规模: 任何集合中元素的最大数量都非常少,约为5000。而延迟是要考虑的重点。如果我还有其他方法可以实现这种性能。会有所帮助。
答案 0 :(得分:0)
我不知道性能是否理想(声音很棒,在我的书中小于1ms很好,但这实际上取决于您的要求)。
我已经在笔记本电脑上执行了以下测试:
$ for i in `seq 0 999`; do redis-cli sadd s1000 forbar$i; done
...
$ for i in `seq 0 9`; do redis-cli sadd s10 foobar$i; done
...
$ redis-benchmark SUNION s1000 s10
...
100.00% <= 56 milliseconds
1171.37 requests per second
$ redis-benchmark SUNION s1000
...
100.00% <= 57 milliseconds
1062.70 requests per second
$ redis-benchmark SMEMBERS s1000
100.00% <= 19 milliseconds
3300.33 requests per second
$ redis-benchmark SINTER s1000
100.00% <= 17 milliseconds
3311.26 requests per second
...
127.0.0.1:6379> INFO
# Server
redis_version:999.999.999
redis_git_sha1:4e5e0d37
redis_git_dirty:1
redis_build_id:abfc1e37fd7acbf7
redis_mode:standalone
os:Darwin 17.7.0 x86_64
arch_bits:64
multiplexing_api:kqueue
atomicvar_api:atomic-builtin
gcc_version:4.2.1
process_id:23596
run_id:73b0f2f6795eccb8286fc086c83d89da45314ce2
tcp_port:6379
uptime_in_seconds:55429
uptime_in_days:0
hz:10
configured_hz:10
lru_clock:9775394
...
Hardware Overview:
Model Name: MacBook Pro
Model Identifier: MacBookPro11,4
Processor Name: Intel Core i7
Processor Speed: 2.2 GHz
Number of Processors: 1
Total Number of Cores: 4
L2 Cache (per Core): 256 KB
L3 Cache: 6 MB
Memory: 16 GB
Boot ROM Version: MBP114.0184.B00
SMC Version (system): 2.29f24
这些结果(以及对代码的深入研究)表明: