Я использую redis для хранения хэшей с ~ 100 тыс. записей за хэш. Я хочу реализовать фильтрацию (огранку) записей в заданном хеше. Обратите внимание, что запись хэша может принадлежать n фильтрам.
После прочтения этого и этого он выглядит следующим образом:
- Внедрить отсортированный набор для каждого фильтра. Значения в SET соответствуют клавишам внутри HASH.
- Извлеките клавиши HASH из заданного фильтра SET.
- Как только у меня есть кнопки HASH из SET, выберите соответствующие записи из HASH. Это должно дать мне все записи, принадлежащие фильтру.
Во-первых, правильный подход выше на высоком уровне?
Предполагая, что подход в порядке, бит, который мне не хватает, является наиболее эффективной версией для извлечения записей HASH? Правильно ли я рассуждаю, как только у меня есть клавиши HASH, я должен использовать PIPELINE для очереди нескольких команд HGETALL, проходящих через каждый HASH-ключ? Есть ли лучший подход?
Моя забота об использовании PIPELINE заключается в том, что я считаю, что он будет блокировать всех других клиентов при обслуживании этой команды. Я буду подталкивать отфильтрованные результаты с 500 результатами на страницу. При использовании нескольких браузеров-клиентов, выполняющих фильтрацию, не говоря уже о задних процессах, которые заполняют SET и HASH, это звучит, как будто существует много споров, если PIPELINE блокирует. Может ли кто-нибудь дать представление об этом?
Если это помогает, я использую 2.2.4 redis, predis для веб-клиентов и служебную программу для задней части.
Спасибо, Пол