Как написать команду сканирования Redis для соответствия любому из двух шаблонов - PullRequest
0 голосов
/ 27 февраля 2020

Я хочу использовать предложение соответствия HSCAN, чтобы сопоставить ключ типа 1 или 2. Регулярное выражение будет похоже на ^match1|^match2. Возможно ли сделать это в шаблоне стиля glob.

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

Redis не предлагает прямой способ сопоставления нескольких шаблонов. Redis сопоставляется с использованием шаблона стиля glob, который очень ограничен.

Поддерживаемые шаблоны стиля glob:

  • h? Llo ​​соответствует hello, hallo и hxllo
  • h * llo соответствует hllo и heeeello
  • h [ae] llo соответствует hello и hallo, но не hillo
  • h [^ e] llo соответствует hallo, hbllo, ... но не hello
  • h [ab] llo соответствует hallo и hbllo

Используйте \ для экранирования специальных символов, если вы хотите дословно их сопоставить.

0 голосов
/ 28 февраля 2020

Вы не можете использовать стиль glob для этого, но вы можете Lua обойти это. Это означает, что вы можете использовать EVAL и скрипт (может быть похож на https://github.com/itamarhaber/redis-lua-scripts/blob/master/scanregex.lua) для выполнения сначала HSCAN match1*, а затем фильтрации с Lua на match2.*.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...