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',...)