gpt4 book ai didi

python - Redis MGET 性能

转载 作者:IT王子 更新时间:2023-10-29 06:12:27 28 4
gpt4 key购买 nike

我正在尝试加载我正在使用 redis 库中的 mget(r.keys()) 的 redis 数据库中的所有值。数据库中有近 100k 个键值对,每个大小约为 40kb。在 RAM 超过 64GB 的 Windows 机器上执行此操作需要将近 38 秒。

我已经将 100k json 转储的 numpy 数组加载到 redis 数据库中,并运行下面显示的代码来捕获读取数据所花费的时间。

import redis
import time
start=time.time()
r=redis.StrictRedis(host='localhost',port=6379,db=0)
test=r.mget(r.keys())
print(time.time()-start)

在具有 >50GB 可用 RAM 的 Windows 机器上花费的时间约为 38 秒。我在运行时检查了系统性能,没有瓶颈。我期待更快的读取性能,但有人可以确认这是预期的行为还是我做错了什么。

最佳答案

不推荐使用

r.keys(),应该考虑使用 scan()

通过调用 keys(),您基本上是在要求 Redis 生成所有键的列表并将它们返回给客户端,这是一个长阻塞操作。

然后,通过调用 r.mget(),您将所有 100k 键的列表发送回 Redis,并要求它生成所有哈希的一个大结果。

我建议您改用 scan() 并从 Redis 中批量处理结果。最后,一旦您进入批处理以避免在请求下一批处理之前等待每个批处理返回,您可能需要使用管道。

关于python - Redis MGET 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57076258/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com