Я создаю очень большие таблицы поиска в Redis. У меня есть некоторый простой код, который работает как задумано при циклическом прохождении через диктовку, чтобы установить одно значение в моем Redis ha sh (через конвейер) для каждого элемента, используя hset()
:
foo = {"1234": "5678", "abcd": "efgh", ... }
with self.db.pipeline() as pipe:
for foo in bar:
pipe.hset("lookup_table", foo["key"], foo["value"])
pipe.execute()
Это медленно с большим требованием. Чтобы ускорить его, я хочу иметь возможность устанавливать несколько элементов в качестве отображения в конвейере без необходимости l oop поверх него. Теперь, когда hmset()
устарело, кажется, что hset()
может принять сопоставление через ключевое слово arg. Я попытался сделать следующее:
with self.db.pipeline() as pipe:
pipe.hset("lookup_table", mapping=foo)
pipe.execute()
, но это приводит к ошибке TypeError: hset() got an unexpected keyword argument 'mapping'
. Я неправильно использую hset()
? Или я ошибаюсь, думая, что hset()
может принимать несколько элементов таким образом?
Я использую py-redis 3.4.1 с Python 3.7.5.