Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Redis SCAN-Abgleich

Redis-Scan-Match unterstützt nur den Glob-Style-Matching. Regex-Matching ist nicht möglich. Um Ihr Ziel zu erreichen, haben Sie zwei Möglichkeiten:

  1. Alle Schlüssel scannen und auf Client-Seite abgleichen.
  2. Verwenden Sie das Lua-Skript, um den Scan und Abgleich durchzuführen. Sie können den folgenden Einzeiler als Beispiel versuchen:
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:[^:]*'

Dieser Einzeiler gibt Ergebnisse genau wie der eingebaute Scan-Befehl zurück. Ich bin kein Lua-Experte und der Code ist nicht vollständig getestet.

Außerdem ist Luas Matching KEIN Regex-Matching, obwohl es die meisten Probleme lösen kann. Sie müssen anhand von Luas Referenz prüfen, ob sie zu Ihrem Fall passt.