sql >> Database >  >> NoSQL >> Redis

Snellere manier om alle sleutels en waarden in redis db . te herhalen

Ten eerste is de snelste manier om dit allemaal binnen EVAL te doen.

Vervolgens is SCAN de aanbevolen benadering om alle sleutels te herhalen. Het zou niet sneller itereren dan KEYS , maar zal Redis in staat stellen enkele andere acties tussendoor te verwerken, dus het zal helpen bij het algemene toepassingsgedrag.

Het script zal zoiets zijn als local data={} local i=1 local mykeys=redis.call(\"KEYS\",\"*\") for k=1,#mykeys do local tmpkey=mykeys[k] data[i]={tmpkey,redis.call(\"GET\",tmpkey)} i=i+1 end return data , maar het zal mislukken als je sleutels hebt die niet toegankelijk zijn met GET (zoals sets, lijsten). U moet er foutafhandeling aan toevoegen. Als u moet sorteren, kunt u dit rechtstreeks in LUA doen, of later aan de clientzijde. De tweede zal langzamer zijn, maar zou andere gebruikers van redis instance niet laten wachten.

Voorbeelduitvoer:

127.0.0.1:6370> eval "local data={} local i=1 local mykeys=redis.call(\"KEYS\",\"*\") for k=1,#mykeys do local tmpkey=mykeys[k] data[i]={tmpkey,redis.call(\"GET\",tmpkey)} i=i+1 end return data" 0
1) 1) "a"
   2) "aval"
2) 1) "b"
   2) "bval"
3) 1) "c"
   2) "cval"
4) 1) "d"
   2) "dval"
5) 1) "e"
   2) "eval"
6) 1) "f"
   2) "fval"
7) 1) "g"
   2) "gval"
8) 1) "h"
   2) "hval"


  1. Inleiding tot HDFS-federatie en architectuur

  2. Filter opnieuw op bereik, sorteer en retourneer eerst 10

  3. MongoDB $toUpper

  4. Gebruik mongoexport met een --query voor ISODate