Поиск ключей с помощью подстановочных знаков

Я сохранил данные с помощью точки с запятой.

redis> keys party:*

1) "party:congress:president"
2) "party:bjp:president"
3) "party:bjp"
4) "party:sena"

Есть ли команда, которая будет перечислять все стороны? В случае вышеприведенного примера я ожидаю

congress
bjp
sena

Ответ 1

Нет, для этого нет команды. Но было бы тривиально реализовать его на стороне клиента, если вам действительно нужно.

Приложения не должны использовать команды KEYS для извлечения данных. KEYS блокирует весь экземпляр Redis, когда он сканирует линейно миллионы ключей, которые вы сохранили. Это скорее команда отладки, которая должна использоваться в инструментах администрирования.

С Redis нет структуры btree для индексации ключей, поэтому вы не можете запрашивать ключи, кроме случаев, когда ваши ключи хранятся в существующей коллекции (set, zset и т.д.)

Ответ 2

Вы можете использовать команду SCAN в redis для поиска ключей без блокировки всей базы данных.

redis SCAN docs

Эта команда имеет дополнительный фильтр MATCH, который работает так же, как фильтр в команде KEYS.

redis> SCAN 0 MATCH party:*

1) <the cursor>
2) 1) "party:congress:president"
   2) "party:bjp:president"
   3) "party:bjp"
   4) "party:sena"

продолжать вызов, пока курсор не вернется к 0, чтобы получить все стороны (возможно, не получить ВСЕ стороны, если они вставлены во время сканирования)

доступно с 2.8

Ответ 3

Я думаю, что если вы хотите получить данные сторон от redis, то каждый раз, когда вы сохраняете свои обычные данные, вы также сохраняете имя партии в списке сторон, тогда вы можете легко ее легко