есть ли у redis возможность обработать коллекцию идентификаторов в одном запросе

#redis

Вопрос:

Теперь я храню данные списка с идентификаторами статей, теперь я использую lrange для получения списка идентификаторов статей. затем, во-вторых, я хочу запросить статью из redis(я также кэшировал горячую статью в redis), есть ли способ использовать в запросе идентификатор статьи? или получите статью, подобную этой:

 for(long id in ids){
   redis.get(id)
}
 

этот способ может получить доступ к redis n раз, лучшим способом может быть только один раз, чтобы получить всю статью. подобный этому:

 redis.get(ids)
 

доступ только один раз.

Ответ №1:

Вы можете использовать MGET для получения значений для списка ключей, который возвращает значение null, если ключ не найден.

Например

MGET article_1 article_2 article_3 article_4 вернет 4 статьи в том же порядке

 Output: Article1, Article2, Article3, Article4
 

Например, если article_3 отсутствует, он все равно вернет 4 элемента, но 3-й будет равен нулю.

 Output: Article1, Article2, null, Article4
 

Ключ MGET [ключ …] Доступно с 1.0.0.

Временная сложность: O(N) , где N — количество ключей для извлечения.

Возвращает значения всех указанных ключей. Для каждого ключа, который не содержит строкового значения или не существует, возвращается специальное значение nil. Из-за этого операция никогда не завершается неудачно.

https://redis.io/commands/mget