繁体   English   中英

Redis 中的流水线 MULTI/EXEC

[英]Pipelining MULTI/EXEC in Redis

目前还不清楚管道交易是否是一种适当的做法。 流水线的吞吐量增益是显着的。

Benchmark.ips do |x|
  x.report("non-pipelined") do
    redis.watch("key")
    redis.multi
    redis.setex("key", 3600, 123)
    redis.exec
  end
  x.report("pipelined") do
    redis.watch("key")
    redis.pipelined do
      redis.multi
      redis.setex("key", 3600, 123)
      redis.exec
    end
  end
end

Warming up --------------------------------------
       non-pipelined    10.000  i/100ms
           pipelined    17.000  i/100ms
Calculating -------------------------------------
       non-pipelined     95.237  (± 9.5%) i/s -    470.000  in   5.015991s
           pipelined    177.370  (±10.7%) i/s -    884.000  in   5.054327s

我担心MULTI可能无法成功执行,但SET仍将在事务之外处理。 这听起来不是一个好习惯。

有什么想法吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM