python - 我怎样才能更快地从for循环中获取redis键
python - how can I make getting redis keys from for loop faster
我正在使用 python 和 redis 包到 get/set 键到 redis。
为了将数据保存到 redis,我正在使用管道,我可以使用它们来加快从 redis 获取数据的过程吗?
def compare_list_by_action_and_user(self, source_list: list, user: str, action: str):
"""Compares given list against combination of user and action data in redis"""
compared_list = []
for row in source_list:
compared_action = self.__redis.get(f'{user.upper()}_{action.upper()}_{row.message_id}')
if compared_action is not None:
compared_list.append(ComparedLoggedAction(row, pickle.loads(compared_action)))
return compared_list
基本上,此方法有一个给定的 source_list,我通过它进行迭代。对于列表中的每个对象,我尝试通过给定的模式获取 redis 键。然后,如果该值不为空,我从列表中的给定对象和 redis 中的未腌制对象创建一个新对象。
我可以使用管道来加快速度吗?
在 400 000 个键上,这种方式大约需要 30 分钟。
Redis MGET command 似乎是正确的选择。
Redis python 会将其公开为:
self.__redis.mget('key1','key2',...)
我正在使用 python 和 redis 包到 get/set 键到 redis。 为了将数据保存到 redis,我正在使用管道,我可以使用它们来加快从 redis 获取数据的过程吗?
def compare_list_by_action_and_user(self, source_list: list, user: str, action: str):
"""Compares given list against combination of user and action data in redis"""
compared_list = []
for row in source_list:
compared_action = self.__redis.get(f'{user.upper()}_{action.upper()}_{row.message_id}')
if compared_action is not None:
compared_list.append(ComparedLoggedAction(row, pickle.loads(compared_action)))
return compared_list
基本上,此方法有一个给定的 source_list,我通过它进行迭代。对于列表中的每个对象,我尝试通过给定的模式获取 redis 键。然后,如果该值不为空,我从列表中的给定对象和 redis 中的未腌制对象创建一个新对象。
我可以使用管道来加快速度吗? 在 400 000 个键上,这种方式大约需要 30 分钟。
Redis MGET command 似乎是正确的选择。
Redis python 会将其公开为:
self.__redis.mget('key1','key2',...)