我有一个大约有 350,000 个键的数据库。目前我的代码只是遍历所有键并从数据库中获取它的值。
然而,这需要将近 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)