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

Redis — najlepszy sposób na przechowywanie dużej mapy (słownik)

Tak, jak mówi Itamar Haber, powinieneś zapoznać się z tym przewodnikiem optymalizacji pamięci redis. Należy jednak pamiętać o kilku innych rzeczach:

  1. Preferuj HSET niż KLUCZE. Redis zużywa dużo pamięci tylko na zarządzanie przestrzenią klucza. Mówiąc prosto (i zgrubnie), 1 HSET z 1 000 000 kluczy zużywa do 10 razy mniej pamięci niż 1 000 000 kluczy z jedną wartością każdy.
  2. Utrzymuj rozmiar HSET mniejszy niż hash-max-zipmap-entries i poprawną hash-max-zipmap-value jeśli głównym celem jest pamięć. Pamiętaj, aby zrozumieć, co hash-max-zipmap-entries i hash-max-zipmap-value oznaczać. Poświęć też trochę czasu na przeczytanie o liście zip.
  3. Właściwie nie chcesz obsługiwać wpisów hash-max-zipmap-entries z ponad 10 milionami kluczy; zamiast tego powinieneś podzielić jeden HSET na wiele slotów. Na przykład ustawiasz hash-max-zipmap-entries jako 10.000. Tak więc, aby przechowywać ponad 10 milionów kluczy, potrzebujesz ponad 1000 kluczy HSET, z których każdy ma 10 000. Jako ogólna zasada:crc32(key) % maxHsets.
  4. Przeczytaj o ciągach w redis i użyj nazwy KEY (w HSET) w oparciu o rzeczywiste zarządzanie pamięcią dla tej struktury. Mówiąc prościej, utrzymując długość klucza poniżej 7 bajtów, wydajesz 16 bajtów na klucz, ale klucz 8-bajtowy zużywa 48 bajtów każdy. Czemu? Przeczytaj o prostych łańcuchach dynamicznych.

Warto przeczytać o:

  • Optymalizacja pamięci Redis (z sripathikrishnan)
  • Komentarze dotyczące wewnętrznej struktury listy zip.
  • Przechowywanie setek milionów prostych par klucz-wartość w Redis (Instagram)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak zaimplementować Redis Multi-Exec za pomocą Spring-data-Redis

  2. Jak migrować dane Redis™ za pomocą Redis-Shake

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

  4. Podziel ciąg po znaku w Lua

  5. Docker&Celery - BŁĄD:Pidfile (celerybeat.pid) już istnieje