Redis
 sql >> Database >  >> NoSQL >> Redis

Corrispondenza Redis SCAN

La corrispondenza di scansione Redis supporta solo la corrispondenza dello stile glob. Non può eseguire la corrispondenza delle espressioni regolari. Per raggiungere il tuo obiettivo, hai due opzioni:

  1. Scansiona tutte le chiavi ed esegui la corrispondenza sul lato client.
  2. Usa lo script Lua per eseguire la scansione e la corrispondenza. Puoi provare il seguente one-liner come esempio:
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:[^:]*'

Questo one-liner restituisce risultati esattamente come il comando di scansione integrato. Non sono un esperto di Lua e il codice non è completamente testato.

Inoltre, la corrispondenza di Lua NON è una corrispondenza regolare, sebbene possa risolvere la maggior parte dei problemi. Devi prendere il riferimento di Lua per verificare se corrisponde al tuo caso.