#redis #redisearch
Вопрос:
Например: учтите, что хэш (назовем его событием) имеет два доступных для поиска свойства: идентификатор пользователя (число) и имя (текст).
Однако всякий раз, когда мне нужно фильтровать события по имени, у меня всегда есть идентификатор пользователя под рукой. Поэтому мне интересно, имеет ли смысл иметь один индекс событий для каждого пользователя вместо одного большого индекса событий для всех пользователей.
Исходя из моих базовых знаний о Redis и RediSearch:
- Один индекс для всех событий всех пользователей:
- Префикс: «события:»
- Ключевые примеры: события:123, события:456
- Плюсы: проще.
- Минусы: всякий раз, когда мне нужно искать события с именем «foo» и идентификатором пользователя 100, RediSearch должен найти блок событий с использованием идентификатора пользователя, а затем отфильтровать имя. Хэш должен находиться в одном и том же осколке или использовать координатора.
- Один индекс на пользователя для его событий:
- Префиксы: «события:%Идентификатор ПОЛЬЗОВАТЕЛЯ%:», т. е. «события:789», где 789-идентификатор пользователя
- Ключевые примеры: события:789:123
- Плюсы: Меньшие индексы для повышения производительности и могут быть легко распределены.
- Минусы: сложнее поддерживать. Если есть пользователи 1mi, у нас есть индексы 1mi, не знаю, проблема это или нет.
Ответ №1:
@jonathan это зависит от ваших требований к производительности и доступной памяти.
Если память не является проблемой (индексирование одного и того же документа дважды), и вы хотите сократить задержку до минимума, это звучит как необязательный вариант.
С одной оговоркой, создание такого количества индексов накладывает накладные расходы на GC, поэтому вам следует учитывать это только в том случае, если индекс пользовательского уровня довольно статичен или недолговечен, и вы можете определить его как TEMPORARY
(может быть с бесконечным временем ожидания)
Комментарии:
1. это не будет индексировать один и тот же документ дважды. Но, похоже, многие индексы могут быть вредными.
2. Пока индексы помечены как ВРЕМЕННЫЕ, вы можете открыть многие из них