Как мы можем использовать конвейер Redis в django-redis?

Я хочу использовать конвейер Redis (выполнять несколько команд) в django-redis.

Мы можем использовать команду multi и exec в Redis, но как мы можем это сделать в django-redis?

Одно из решений:

У меня есть список хеш-ключей, я хочу получить все хэши, используя хеш-ключ.

При каждой итерации команда отправляется на сервер Redis для получения по одному хэшу.

for hashkey in feedlist:
    result = con.execute_command('hgetall',hashkey)
    print(result)

Это не очень хорошая идея, вместо этого мы можем использовать конвейер Redis. Но как я могу реализовать конвейер Redis в django-redis?


person Muhammad Faizan Fareed    schedule 28.02.2020    source источник


Ответы (1)


Использование конвейера Redis в django-redis.

 #first create pipline object using con object 
 pipeline = con.pipeline()

Вставка всех команд в конвейер. Извлечение всех хеш-ключей по одному и вставка их в конвейер.

 if feedlist:
     for post in feedlist:
         pipeline.execute_command('hgetall',post)
         #hgetall redis command to get all items of given hash key

Затем вызовите метод execute() в конвейере. Он вернет результат обратно в переменную результата.

     result = pipeline.execute()

Транзакции Redis

MULTI, EXEC, DISCARD и WATCH — это основа транзакций в Redis. Они позволяют выполнять группу команд за один шаг.

Преимущества

  • За один вызов мы можем получить все записи.
  • Сокращение сетевых вызовов.

Читайте также

официальный документ по транзакциям Redis

person Muhammad Faizan Fareed    schedule 07.03.2020