Redis: использование промежуточных результатов запросов в пределах одной транзакции — как?

Здравствуйте.

Долгие поиски меня ни к чему не привели, потому вопрошаю здесь.


Задача: сделать «сложную» выборку из Redis одной транзакцией (что бы сэкономить на подключениях и времени транспорта).


Пример:

Есть записи, содержащие хеши:
objects:1 = [], objects:2 = []

Есть индексы, для поиска объектов по их свойствам
index:objects:prop:value1 = 1, index:objects:prop:value2 = 2

(не SET/LIST, потому что искать нужно с wildcard (propname*), а этом можно делать только при помощи команды KEYS. Номера хранятся без keyspace, т.к. данные могут храниться в разных keyspace-ах)


Как в пределах одного запроса (одной транзакции) сначала выбрать при помощи KEYS из индекса нужные айдишники записей, взять полученный multi bulk reply, подставить к ним нужный keyspace (objects:) и MGET-ом выбрать нужные объекты?


Если это нельзя сделать транзакцией, а нужно выполнить LUA-скрипт — был бы очень благодарен подсказке по нему.


Спасибо
  • Вопрос задан
  • 3119 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы