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

Porównanie wydajności użycia skrótów Redis z wieloma kluczami

Wybór hash nad string ma wiele zalet i kilka wad w zależności od przypadków użycia. Jeśli masz zamiar wybrać hash, lepiej zaprojektuj swój obiekt json jako pola i wartości hasz, takie jak;

127.0.0.1:6379> hset user:1 ssn 10101010101 name john surname wick date 2020-02-02 location continental
(integer) 5
127.0.0.1:6379> hgetall user:1
 1) "ssn"
 2) "10101010101"
 3) "name"
 4) "john"
 5) "surname"
 6) "wick"
 7) "date"
 8) "2020-02-02"
 9) "location"
10) "continental"

Oto zalety hash nad ciągami, gdy wykonasz właściwe modelowanie danych.

  • Po stronie wydajności większość poleceń zarówno dla łańcuchów, jak i skrótu ma tę samą złożoność.
  • Uzyskiwanie dostępu/aktualizowanie/usuwanie poszczególnych pól json w skrótach jest łatwiejsze, gdy są one porównywane z ciągami. Nie musisz pobierać całego ciągu, dekodować, wprowadzać zmian i ustawiać go od nowa. Możesz użyć HDEL, HSET lub HGET do tych operacji bez pobierania całego obiektu.
  • Jeśli rozmiar obiektu tekstowego wzrośnie, będziesz cierpieć z powodu sieci i przepustowości podczas przesyłania (pobierania/ustawiania) całego obiektu. Jak podano w dokumentacji

Szybkość pamięci RAM i przepustowość pamięci wydają się mniej krytyczne dla globalnej wydajności, zwłaszcza w przypadku małych obiektów. W przypadku dużych obiektów (>10 KB) może to jednak stać się zauważalne.

  • Skróty są bardziej przyjazne dla pamięci niż ciągi, jeśli tworzysz dobry punkt odniesienia do projektowania rozmiaru danych. Jak podano w dokumentacji i przykładowym przypadku użycia przez inżynierię na Instagramie, możesz uzyskać ogromne korzyści dzięki specjalnemu kodowaniu.

Hasze, listy, zestawy składające się tylko z liczb całkowitych i posortowane zestawy, gdy są mniejsze niż określona liczba elementów i do maksymalnego rozmiaru elementu, są zakodowane w bardzo wydajny sposób, który zużywa do 10 razy mniej pamięci (przy 5 czas mniej pamięci jest średnią oszczędnością).

Z drugiej strony, w zależności od przypadków użycia;

  • ziplist nie jest za darmo, jest kompromisem między pamięcią a procesorem.
  • Nie można częściowo wygasać pól skrótu. Jeśli podzielisz na wiele ciągów, możesz EXPIRE je, ale w hashach tylko klucz najwyższego poziomu może wygasnąć ze wszystkimi wartościami.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wyłącz redis, gdy wiele limitów czasu przy użyciu wiosennego rozruchu

  2. Predis z laravel 5.5 Brak dostępnych połączeń w puli w Aggregate/RedisCluster.php:337

  3. Utrzymuj przy życiu dane Redis między docker-compose w dół i w górę w kontenerze Docker

  4. Laravel - Uruchamianie zadań w sekwencji

  5. Problem w deserializacji redis-cache do obiektów w Spring-boot