我有一个包含大约 35 万个键的数据库。目前我的代码只是循环遍历所有键并从数据库中获取其值。
然而,这个过程需要将近 2 分钟,似乎非常慢,而
我已经研究了流水线处理,但我需要返回每个值,以便最终得到一个键-值对的字典。
目前,我正在考虑在我的代码中使用线程来加速执行速度,这是处理这种用例的最佳方式吗?
以下是我目前拥有的代码。
然而,这个过程需要将近 2 分钟,似乎非常慢,而
redis-benchmark
的结果为 100k reqs/3s。我已经研究了流水线处理,但我需要返回每个值,以便最终得到一个键-值对的字典。
目前,我正在考虑在我的代码中使用线程来加速执行速度,这是处理这种用例的最佳方式吗?
以下是我目前拥有的代码。
import redis, timeit
start_time = timeit.default_timer()
count = redis.Redis(host='127.0.0.1', port=6379, db=9)
keys = count.keys()
data = {}
for key in keys:
value = count.get(key)
if value:
data[key.decode('utf-8')] = int(value.decode('utf-8'))
elapsed = timeit.default_timer() - start_time
print('Time to read {} records: '.format(len(keys)), elapsed)