python - 3000 keyhash 的 Redis 值获取大约需要 10 秒(python 3.5)

标签 python performance redis

我是 REDIS 世界的新手。我正在尝试从 REDIS 获取 3000 个键的值。每个散列都有 6 个我想要获取的值。我使用 Python 3.5 连接到 REDIS 一次,然后循环遍历我的 key 哈希以从 REDIS 获取它们各自的值。但是,目前获取这 3000 行的值大约需要 10 秒。我正在使用下面的代码从 REDIS 获取数据。你能帮我加快获取速度吗?有没有办法一次发送所有键并获取与它们相关的值?我为此使用 python 3.5。

redis_pool = redis.ConnectionPool(host='XYZ',
                                  port='XY',
                                  db='X')
r = redis.Redis(connection_pool=red_pool)

field1 = r.hmget(primary_key, "Field1")

最佳答案

你可以试试 pipeline以加快查询速度。

r = redis.Redis(connection_pool=red_pool)
pipe = r.pipeline()
for key in keys_list: 
    pipe.hget(key, "field1")
results = pipe.execute()

results 将是每个 hget 回复的列表。你可以引用redis-py的自述文件的管道部分,以了解有关如何在 python redis 客户端中使用管道的更多信息。

关于python - 3000 keyhash 的 Redis 值获取大约需要 10 秒(python 3.5),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46065879/

相关文章:

Python/Gensim - syn0 和 syn0norm 的含义是什么?

java - 在数组中多次存储相同的引用项,一次更改是否会影响所有引用项?

javascript - 提高jquery/javascript网页逻辑的性能

redis - Spinnaker 是否支持 Redis 4?

laravel - 在生产环境中如何在Laravel 6中管理队列?

hash - 如何在 Redis Hash 上执行搜索?

python - 为什么我的大都会算法(mcmc)的Python实现这么慢?

python - 使用列表理解将字符串拆分为 K 个子字符串

python - 如何注册一个在按下 Ctrl+C 后立即运行的 SIGINT 处理程序?

python - 快速信息增益计算