Włącz kompresję za pomocą redis

Włącz kompresję za pomocą redis

Zdalny serwer słownika, czyli w skrócie Redis, to błyskawiczna baza danych w pamięci, która przechowuje wartości w parach kluczowych. Jest używany głównie jako mechanizm buforowania dla baz danych, takich jak SQL i Dokument Basabase.

Ponieważ Redis jest bazą danych w pamięci, zastosowana przestrzeń jest krytyczna i należy ją mocno monitorować. Jedną ze strategii poprawy i optymalizacji wydajności pamięci dla Redis jest użycie kompresji.

Domyślnie Redis nie zapewnia kompresji dla żadnych przechowywanych danych. Stąd techniki kompresji są wdrażane w aplikacji.

Pozwól nam omówić kilka technik, których możesz użyć do optymalizacji wydajności pamięci w Redis.

Wdrożyć algorytm kompresji

Ponieważ Redis nie kompresuje przechowywanych wartości, musisz to zrobić przed ich przechowywaniem. Istnieje kilka algorytmów kompresji do kompresji ciągów przed ich przechowywaniem.

Takie algorytmy obejmują:

  1. Kompresja LZO - bardzo szybko i zapewnia wyższe prędkości dekompresyjne.
  2. LZ4 - wydajne pod względem prędkości i bardzo łatwe do zintegrowania się z aplikacjami.
  3. Żwawy - Wysokie prędkości kompresji/dekompresji.

Użyj krótszych nazwisk

Chociaż programiści powinni faworyzować bardziej opisowe nazwy w stosunku do krótkich, użycie pamięci może szybko gwałtownie wzrosnąć, jeśli masz obszerny zbiór klawiszy w bazie danych.

Zawsze rozważ użycie krótkich nazwisk dla danych dotyczących wartości kluczowej, aby uniknąć tego.

Przykład:

Ustaw this_is_a_very_large_key_name Wartość

Zamiast tego możesz użyć nazwy kluczowej:

Ustaw wartość l_key_name

Zmniejsza to liczbę znaków Redisa do przechowywania dla Twojej bazy danych.

Kompresuj nazwy pola

Ten sam przypadek powyżej można powiedzieć o nazwiskach pola. I znowu, użycie krótszej nazwy pola może zapisać kilka bajtów lub kilobajtów twojej pamięci.

Dlatego rozważ użycie krótkich nazw pola dla danych Redis.

Przykładem jest jak pokazano:

127.0.0.1: 6379> Hset user_info Id 1 nazwa pierwszej nazwy LastName K Kraj „Stany Zjednoczone Ameryki”

Tutaj możemy zapisać trochę pamięci, refaktorując nazwy pola jako:

Hset user_info id 1 fname moes lname kraj US

To kompresuje nazwy pola i wartości.

Użyj listy zamiast skrótu

Hash składa się z nazw pola i odpowiednich wartości. Chociaż nie jest to istotny problem, może to być problematyczne, gdy tysiące typów skrótów wchodzą w grę.

Aby to rozwiązać, możesz wybrać listę, jak pokazano:

Hset user_info id 1 fname moes lname kraj US

Możesz przekonwertować powyższy skrót na listę jako:

LPUSH [„Fname”, „Moes”, „Lname”, „K”, „kraj”, „us”]

Unikaj dynamicznych skryptów Lua

Aby zaoszczędzić jeszcze więcej pamięci, unikaj używania dynamicznych skryptów LUA, które powodują wzrost pamięci podręcznej. Im więcej scenariuszy ładujesz, tym więcej zużywasz dużo pamięci.

Włącz kompresję listy

Jak wspomniano, Redis nie kompresuje żadnych przechowywanych wartości. Obejmuje to elementy wewnątrz listy. W przypadku krótkich wartości listy nie stanowi to problemu. Jednak na długich listach może być korzystne, aby umożliwić kompresję.

W Redis.plik CONF, zlokalizuj linię:

sudo cat/etc/redis/redis.Conf | GREP List-Compress
List-Compress Depth 0 // Zmień tę wartość

Zmień wartość głębokości listy compress na jedną z nich:

  1. 1 - kompresuje każdy węzeł listy oprócz głowy i ogona.
  2. 2 - Nigdy nie kompresuj głowy, głową-> lub ogonem lub ogonem-> prev
  3. 3 - Rozpocznij kompresję po Head-> Next and Tail->-Prev

Uaktualnij swoją wersję Redis

Kolejnym krokiem, który możesz zrobić, aby poprawić zużycie pamięci na serwerze Redis, jest aktualizacja wersji Redis.

Od pisania tego samouczka, wersja 4.0 (najnowsze) zawiera następujące funkcje.

Zamknięcie

W tym przewodniku omówiono różne metody i techniki, których możesz użyć do optymalizacji wykorzystania pamięci w klastrze Redis. Pamiętaj jednak, że nie wszystkie formy są w 100% gwarantowane.

Dziękujemy za przeczytanie, do zobaczenia w następnym!!