【问题标题】:why python using redis is so slow?为什么python使用redis这么慢?
【发布时间】:2014-09-21 15:21:17
【问题描述】:

我在我的云服务器上设置了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 个请求。 如何改进?

【问题讨论】:

    标签: python redis benchmarking


    【解决方案1】:

    从阅读http://redis.io/topics/benchmarks开始

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

    • 使用pipelining - Python中的示例here
    • 使用 mget 在一个命令中检索多个键
    • 进行超过 8000 次迭代,这对于评估性能来说太低了

    请注意,在 Python 中您不会达到 redis-benchmark 的性能,但您应该能够使用流水线或 mget 实现每秒超过 50K 的获取操作。

    【讨论】:

      猜你喜欢
      • 2011-01-13
      • 2021-01-16
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 2023-04-02
      • 1970-01-01
      • 2018-10-08
      相关资源
      最近更新 更多