Распределенный поиск Redis с использованием индекса Redis

В настоящее время мы используем поиск Redis в качестве базы данных векторов. Мы развернули кластер стека Redis с 6 узлами: 3 главными и 3 ведомыми. Наши данные разделены на несколько групп, для каждой группы мы создали индекс для быстрого поиска, и для каждой группы данных может быть несколько индексов.

Теперь проблема в том, что индекс создается на одном узле, а соответствующие данные перемещаются на все узлы. И можно искать только те данные, которые доступны в узле индекса.

Мы использовали синтаксис {}, чтобы заставить данные перемещаться к отдельным узлам, как это предложено Redis, следующим образом.

      HSET key_{abc}_doc <value> 

здесь все данные с ключом abc будут поступать в один и тот же узел, поскольку они будут использовать один и тот же хэш-слот.

Теперь мы хотим, чтобы этот индекс и соответствующие данные направлялись в один и тот же узел, чтобы его можно было снова найти. Кинлди предлагает жизнеспособное решение.

Версия поиска Redis: 2.0+

1 ответ

Когда вы запускаете кластер, ключи распределяются по узлам. Чтобы выполнить поиск по всем узлам, вам нужно что-то, что:

  1. Создайте индексы на всех узлах.
  2. Найдите все узлы и агрегируйте результаты.

Redis Cloud и Redis Enterprise позаботятся об этом за вас, но если вы выполняете развертывание, RSCoordinator — это инструмент, на который вам стоит обратить внимание.

Заметьте, я сам им не пользовался, но он создан для решения именно этой проблемы.

Другие вопросы по тегам