Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano najlepsze rozwiązania dotyczące zarządzania pamięcią w usłudze Azure Cache for Redis.
Wybieranie odpowiednich zasad eksmisji
Wybierz zasady eksmisji, które działają dla aplikacji. Domyślne zasady dla usługi Azure Cache for Redis to volatile-lru
, co oznacza, że tylko klucze, które mają czas wygaśnięcia (TTL) ustawione za pomocą polecenia, takiego jak EXPIRE , kwalifikują się do eksmisji. Jeśli żadne klucze nie mają wartości TTL, system nie usuwa żadnych kluczy. Jeśli chcesz, aby system zezwolił na eksmisję dowolnego klucza, gdy występuje presja pamięciowa, rozważ allkeys-lru
politykę.
Ustawianie daty wygaśnięcia kluczy
Usunięcie danych ze względu na presję pamięciową może spowodować większe obciążenie serwera. Ustaw wartość wygasania dla kluczy, aby proaktywnie usuwać je zamiast czekać na problemy z pamięcią. Aby uzyskać więcej informacji, zobacz dokumentację poleceń Redis EXPIRE i EXPIREAT .
Minimalizowanie fragmentacji pamięci
Duże wartości kluczy mogą pozostawić pamięć pofragmentowaną podczas usuwania i mogą prowadzić do wysokiego użycia pamięci i obciążenia serwera.
Monitoruj użycie pamięci
Monitoruj użycie pamięci , aby upewnić się, że nie zabraknie pamięci. Utwórz alerty , aby umożliwić skalowanie pamięci podręcznej przed wystąpieniem problemów.
Konfigurowanie ustawienia maxmemory-reserved
Skonfiguruj ustawienia maxmemory-reserved , aby zmaksymalizować czas reakcji systemu. Wystarczające ustawienia rezerwacji są szczególnie ważne w przypadku obciążeń z dużą ilością operacji zapisu lub jeśli przechowujesz w pamięci podręcznej wartości o rozmiarze 100 KB lub większym.
Ustawienie
maxmemory-reserved
konfiguruje ilość pamięci w MB na instancję w klastrze, zarezerwowanej dla operacji innych niż cache, takich jak replikacja podczas awarii. Ustawienie tej wartości pozwala zwiększyć spójność zachowania serwera Redis przy zmianach obciążenia.Ustawienie
maxfragmentationmemory-reserved
konfiguruje wielkość pamięci w MB na każdą instancję w klastrze, zarezerwowaną na potrzebę uwzględnienia fragmentacji pamięci. Po ustawieniu tej wartości środowisko serwera Redis jest bardziej spójne, gdy pamięć podręczna jest pełna lub bliska pełnej, a współczynnik fragmentacji jest wysoki.
Gdy pamięć jest zarezerwowana dla tych operacji, jest niedostępna do przechowywania buforowanych danych. Domyślnie podczas tworzenia pamięci podręcznej około 10% dostępnej pamięci jest zarezerwowane dla maxmemory-reserved
, a kolejne 10% jest zarezerwowane dla maxfragmentationmemory-reserved
. Możesz zwiększyć rezerwację zasobów, jeśli masz duże obciążenia operacjami zapisu.
Dozwolone zakresy dla maxmemory-reserved
i dla maxfragmentationmemory-reserved
to 10%- 60% wartości maxmemory
. Jeśli spróbujesz ustawić te wartości niższe niż 10% lub wyższe niż 60%, zostaną one ponownie przeszacowane i ustawione na wartość minimalną 10% i maksymalną 60%.
W przypadku skalowania pamięci podręcznej w górę lub w dół ustawienia i maxmemory-reserved
maxfragmentationmemory-reserved
są automatycznie skalowane proporcjonalnie do rozmiaru pamięci podręcznej. Na przykład, jeśli dla maxmemory-reserved
ustalono wartość 3 GB przy 6-GB pamięci podręcznej, a potem zwiększysz skalę do pamięci podręcznej 12 GB, ustawienie zostanie automatycznie zaktualizowane do 6 GB podczas skalowania. W przypadku skalowania w dół nastąpi odwrotnie.
Zastanów się, jak zmiana wartości rezerwacji pamięci maxmemory-reserved
lub maxfragmentationmemory-reserved
może wpłynąć na pamięć podręczną zawierającą dużą ilość danych, która jest już aktywna. Na przykład, jeśli masz pamięć podręczną o pojemności 53 GB, z wartościami zarezerwowanymi ustawionymi na minimalny poziom 10%, maksymalna dostępna pamięć dla systemu wynosi około 42 GB. Jeśli bieżące wartości used_memory
lub used_memory_rss
są wyższe niż 42 GB, system musi usunąć dane, aż obie wartości used_memory
i used_memory_rss
będą mniejsze niż 42 GB.
Eksmisja może zwiększyć obciążenie serwera i fragmentację pamięci. Aby uzyskać więcej informacji na temat metryk pamięci podręcznej, takich jak used_memory
i , zobacz used_memory_rss
.
Uwaga
W przypadku programowego skalowania pamięci podręcznej w górę lub w dół przy użyciu programu Azure PowerShell, interfejsu wiersza polecenia platformy Azure lub interfejsu API REST wszystkie dołączone maxmemory-reserved
lub maxfragmentationmemory-reserved
ustawienia są ignorowane w ramach żądania aktualizacji. Uwzględniana jest tylko zmiana skalowania. Ustawienia pamięci można zaktualizować po zakończeniu operacji skalowania.