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

Redis SCAN matching

Redis-scanningsmatch understøtter kun glob-stilmatch. Den kan ikke matche regex. For at nå dit mål har du to muligheder:

  1. Scan alle nøgler, og foretag matchning på klientsiden.
  2. Brug Lua-script til at scanne og matche. Du kan prøve følgende one-liner som et eksempel:
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:[^:]*'

Denne one-liner returnerer resultater nøjagtigt som den indbyggede scanningskommando. Jeg er ikke Lua-ekspert, og koden er ikke fuldt testet.

Luas matching er heller IKKE regex-matching, selvom det kan løse de fleste problemer. Du skal tage Luas reference for at tjekke, om den matcher din sag.




  1. Rækkebaseret personsøgning mongodb

  2. Brug af StackExchange.Redis i en ASP.NET Core Controller

  3. Få genereret script i MongoDB C# driver

  4. Delvis opdatering af et underdokument med nodejs/mongoose