Dopasowanie skanowania Redis obsługuje tylko dopasowywanie stylu glob. Nie może dopasowywać wyrażeń regularnych. Aby osiągnąć swój cel, masz dwie możliwości:
- Skanuj wszystkie klucze i dopasuj po stronie klienta.
- Użyj skryptu Lua do skanowania i dopasowywania. Jako przykład możesz wypróbować następujący tekst:
redis-cli eval 'local res = redis.call("scan", ARGV[1]); local matches = {}; for i,v in ipairs(res[2]) do if v == string.match(v, ARGV[2]) then matches[#matches+1] = v end end res[2] = matches; return res' 0 cursor-starting-from-0 'Person:[^:]*'
Ten jednowierszowy zwraca wyniki dokładnie tak, jak wbudowane polecenie skanowania. Nie jestem ekspertem od Lua, a kod nie jest w pełni przetestowany.
Ponadto dopasowanie Lua NIE jest dopasowaniem do wyrażenia regularnego, chociaż może rozwiązać większość problemów. Musisz wziąć referencje Lua, aby sprawdzić, czy pasuje do twojego przypadku.