Это может быть выполнено в два или три шага:
1) Используйте SCAN
или KEYS
, чтобы найти keys
, соответствующий вашему шаблону .
SCAN 0 MATCH "*genre1*"
1) "9"
2) 1) "genre1|genre2|genre3"
2) "genre1|genre4"
2) Для каждой клавиши используйте TYPE
, чтобы проверить, является ли это отсортированным набором. Это важно только в том случае, если у вас есть другие жанр1 ключи на БД
TYPE "genre1|genre4"
zset
3) Запустите ZREVRANGEBYSCORE <key> +inf -inf WITHSCORES LIMIT 0 1
для каждой клавиши.
См. Этот ответ о том, как вы можете сканировать для данного типа . Вы можете изменить сценарий Lua, включив в него ZREVRANGEBYSCORE
, и получать результаты атомарно по одному вызову.
Наконец, рассмотрите вопрос о том, является ли сохранение жанровых комбинаций оптимальным в вашем случае. Вы можете использовать отсортированный набор по жанру, а затем использовать ZUNIONSTORE
или ZINTERSTORE
, чтобы получить набранные комбинации.