【问题标题】:Why is Redis SET performance better than GET?为什么 Redis 的 SET 性能优于 GET?
【发布时间】:2013-01-14 02:03:59
【问题描述】:

根据 Redis benchmarks,Redis 每秒可以执行 100'000 次 SET 操作,以及 80'000 次 GET 操作/s。 Redis 是一个内存数据库,这似乎令人惊讶,因为通常人们会期望内存写入比读取慢一些,例如考虑到 SET 需要在写入值之前分配内存。

有人能解释为什么 SET 比 GET 快吗?

【问题讨论】:

    标签: redis benchmarking in-memory-database


    【解决方案1】:

    实际上,这只是默认情况下测量的 I/O 比实际命令执行时间多的效果。如果您开始在基准测试中启用流水线,它会更多地衡量实际命令性能,并且数字会发生变化:

    $ redis-benchmark -q -n 1000000 -P 32 set foo bar
    set foo bar: 338964.03
    $ redis-benchmark -q -n 1000000 -P 32 get foo
    get foo: 432713.09 requests per second
    

    现在 GET 更快了 :-)

    我们应该在基准文档页面中包含流水线。

    编辑:这在此处更为明显:

    redis 127.0.0.1:6379> info commandstats
    # Commandstats
    cmdstat_get:calls=1001568,usec=221845,usec_per_call=0.22
    cmdstat_set:calls=831104,usec=498235,usec_per_call=0.60
    

    此命令提供 CPU 时间以在内部处理请求,而不考虑 I/O。 SET 的处理速度要慢三倍。

    【讨论】:

    • 附注在 MBA 11" i7 版本中进行的测试。
    猜你喜欢
    • 2014-06-08
    • 1970-01-01
    • 2013-05-26
    • 2014-08-09
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    • 2012-09-14
    相关资源
    最近更新 更多