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-скрипт — был бы очень благодарен подсказке по нему.