Redis-scanovereenkomst ondersteunt alleen glob-stijlovereenkomst. Het kan geen regex-matching uitvoeren. Om je doel te bereiken, heb je twee opties:
- Scan alle sleutels en doe overeenkomsten aan de kant van de klant.
- Gebruik het Lua-script om te scannen en te matchen. U kunt de volgende oneliner als voorbeeld proberen:
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:[^:]*'
Deze one-liner geeft resultaten precies zoals de ingebouwde scanopdracht. Ik ben geen Lua-expert en de code is niet volledig getest.
Lua's matching is ook GEEN regex-matching, hoewel het de meeste problemen kan oplossen. U moet de referentie van Lua gebruiken om te controleren of deze overeenkomt met uw zaak.