Как я могу выполнить СКАНИРОВАНИЕ в Redis, которое вернет СОВПАДЕНИЕ ключа, состоящего всего из 18 цифр?

Пытаясь сделать SCAN в моем redis DB, я понял, что не могу запускать шаблоны регулярных выражений для команды SCAN.

Я создаю бота Discord, поэтому в моей БД есть следующий хэш:

host[0]> HGETALL 123456789012345678
1) "prefix"
2) "!"
3) "language"
4) "es-la"

Но когда я пытаюсь отсканировать этот хэш-ключ, делая следующее, я не получаю никаких результатов

host[0]> SCAN 0 MATCH '[0-9]{18}'

1) "0"
2) (empty array)

Мой вопрос: какое выражение шаблона использует Redis для сканирования и как я могу сопоставить этот тип ключа?

Я также пробовал их как pattern без везения

/[0-9]{18}/g
\d{18}
'/[0-9]{18}/g'
'/\d{18}/g'

Надеюсь, вы знаете, как это работает. Заранее спасибо!


person Lord Reptilia    schedule 22.01.2021    source источник
comment
Вы можете решить это с помощью сценариев Lua. Проверьте, например, это. Поскольку сопоставление Lua не поддерживает повторение, вам также необходимо проверить размер ключа в Lua, т. е. if v == string.match(v, ARGV[2]) and string.len(v) == 18, и указать шаблон, например: '^[0-9]*$'   -  person for_stack    schedule 22.01.2021