为什么Python使用Redis会很慢?

10

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

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

但是当我使用Python循环执行set/get时:

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个回答

14

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

简而言之,你的Python程序在单个连接上生成了太多的Redis往返,因此你每次迭代都要支付网络延迟的代价。我的建议:

  • 使用pipelining - Python示例在这里
  • 使用mget一次检索多个键
  • 进行超过8000次迭代,这太低以评估性能

请注意,你将无法在Python中达到redis-benchmark的性能,但使用pipelining或mget,你应该能够实现每秒超过50K个获取操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接