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:
- Scansiona tutte le chiavi ed esegui la corrispondenza sul lato client.
- 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.