sql >> Base de Datos >  >> NoSQL >> Redis

Manera más rápida de iterar todas las claves y valores en redis db

Primero, la forma más rápida es hacer todo esto dentro de EVAL.

A continuación, el enfoque recomendado para iterar todas las claves es ESCANEAR. No iteraría más rápido que KEYS , pero permitirá que Redis procese algunas otras acciones en el medio, por lo que ayudará con el comportamiento general de la aplicación.

El script será algo así como 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 , pero fallará si tiene claves inaccesibles con GET (como conjuntos, listas). Necesitas agregarle manejo de errores. Si necesita clasificar, puede hacerlo directamente en LUA o más tarde en el lado del cliente. El segundo será más lento, pero no permitirá que otros usuarios de la instancia redis esperen.

Salida de muestra:

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"