Redis skanningsmatchning stöder endast glob-stilmatchning. Det kan inte göra regex-matchning. För att uppnå ditt mål har du två alternativ:
- Skanna alla nycklar och gör matchning på klientsidan.
- Använd Lua-skriptet för att skanna och matcha. Du kan prova följande one-liner som ett exempel:
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:[^:]*'
Denna one-liner returnerar resultat exakt som det inbyggda skanningskommandot. Jag är ingen Lua-expert och koden är inte helt testad.
Luas matchning är INTE regex-matchning, även om det kan lösa de flesta problem. Du måste ta Luas referens för att kontrollera om den matchar ditt fall.