为什么python使用redis这么慢?

时间:2014-09-21 15:21:18

标签: python redis benchmarking

我在我的云服务器上安装了redis,并运行redis-benchmark,结果是:

SET:每秒90909.09个请求 GET:每秒91743.12个请求

但是当我使用python时,执行set / get in循环:

import datetime
import redis 
r = redis.Redis(host='127.0.0.1', port=6379, db=1)
mapData = {}
begin = datetime.datetime.now()
for i in range(8000):
        mapData[i] = r.get([str(i)])
end = datetime.datetime.now()
print end-begin

结果每秒只有8000个请求。 我该如何改进呢?

1 个答案:

答案 0 :(得分:10)

首先阅读http://redis.io/topics/benchmarks

简而言之,您的python程序在单个连接上为Redis生成了太多的往返,因此您需要为每次迭代时的网络延迟付费。我的建议:

  • 使用pipelining - Python here
  • 中的示例
  • 使用mget在一个命令中检索多个键
  • 执行超过8000次迭代,这太低而无法评估性能

请注意,您无法在Python中达到redis-benchmark的性能,但您应该能够通过管道传输或mget实现每秒50,000次以上的获取操作。