sql >> Databasteknik >  >> NoSQL >> Redis

Redis SCAN-matchning

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:

  1. Skanna alla nycklar och gör matchning på klientsidan.
  2. 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.




  1. MongoDB - Hur är det med decimaltyp av värde?

  2. Varför du fortfarande borde använda MMAPv1 Storage Engine för MongoDB

  3. Hur man använder MongoDB Stitch i Android-appar

  4. Bestående data från Redis till MongoDB för datalagring