Практическое задание

Эта задача — шаг 17 курса «Redis в проде»

Поиск по хешам: Query Engine

средне~15 мин

В Redis лежат товары — хеши product:1 … product:24 с полями name (название), category (одна категория-метка) и price (целое число).

  1. Создай индекс idx:products по хешам с префиксом product: со схемой: name — TEXT, category — TAG, price — NUMERIC.
  2. Найди через индекс все товары категории ровно books с ценой не больше 500 (500 включительно), отсортированные по цене по возрастанию.
  3. Запиши ключи найденных товаров в /root/books.txt — по одному в строке, в порядке сортировки, без других строк.
Что потренируешь:
  • redis
  • Query Engine
  • RediSearch
  • FT.CREATE
  • FT.SEARCH
  • FT.INFO
  • TAG
  • NUMERIC

Разбор темы

Query Engine (бывший RediSearch, в Redis 8 встроен) строит вторичные индексы поверх хешей или JSON-документов с заданным префиксом ключа и дальше сам поддерживает их при каждой записи. Без индекса найти «все книги дешевле 500» можно только полным SCAN с чтением каждого ключа. Тип поля определяет, как по нему искать: TEXT — полнотекстовый поиск со стеммингом, TAG — точное совпадение метки (категории, статусы, id), NUMERIC — диапазоны и сортировка. Ошибка в типе (категория как TEXT) даёт «похожие» совпадения вместо точных. Учти и пагинацию: FT.SEARCH по умолчанию отдаёт первые 10 результатов.

Что проверяется

  1. индекс idx:products по хешам product: с нужной схемой
  2. в индексе все 24 товара
  3. в /root/books.txt нужные ключи в нужном порядке

Как это выглядит