sql >> Databáze >  >> NoSQL >> Redis

Rychlejší způsob, jak iterovat všechny klíče a hodnoty v redis db

Za prvé, nejrychlejším způsobem je to všechno udělat uvnitř EVAL.

Dalším doporučeným přístupem k iteraci všech klíčů je SCAN. Neopakuje se rychleji než KEYS , ale umožní Redis zpracovat některé další akce mezi tím, takže to pomůže s celkovým chováním aplikace.

Skript bude něco jako 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 , ale selže, pokud máte klíče nepřístupné pomocí GET (jako sady, seznamy). Musíte k tomu přidat zpracování chyb. Pokud potřebujete řazení, můžete to provést buď přímo v LUA, nebo později na straně klienta. Druhý bude pomalejší, ale nenechá ostatní uživatele instance redis čekat.

Ukázkový výstup:

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. Pokud mám id dokumentu mongo jako řetězec, jak jej mohu zadat jako _id?

  2. Jak mohu čekat, až bude dokovací kontejner v provozu?

  3. MongoDB Datový adresář /data/db nebyl nalezen

  4. potíže s nastavením backendu celerových úloh v Pythonu