Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Szybszy sposób iteracji wszystkich kluczy i wartości w redis db

Po pierwsze, najszybszym sposobem jest zrobienie tego wszystkiego w EVAL.

Następnie zalecanym podejściem do iteracji wszystkich kluczy jest SKANOWANIE. Nie będzie iterować szybciej niż KEYS , ale pozwoli Redisowi na przetworzenie niektórych innych działań w międzyczasie, co pomoże w ogólnym zachowaniu aplikacji.

Skrypt będzie podobny do 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 zawiedzie, jeśli masz klucze niedostępne w GET (takie jak zestawy, listy). Musisz dodać do niego obsługę błędów. Jeśli potrzebujesz sortowania, możesz to zrobić bezpośrednio w LUA lub później po stronie klienta. Drugi będzie wolniejszy, ale nie pozwoli innym użytkownikom instancji redis czekać.

Przykładowe wyjście:

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Zestaw wsadowy danych ze słownika do Redis

  2. Liczba skanów Redis:jak zmusić funkcję SCAN do zwracania wszystkich kluczy zgodnych ze wzorcem?

  3. Korzystanie z replikacji Redis na różnych komputerach (multi master)

  4. Redis filtruj według zakresu, sortuj i zwróć najpierw 10

  5. Sesje współdzielone między aplikacjami węzłowymi?