Udostępnij przez


Rozwiązywanie problemów z utratą danych w usłudze Azure Managed Redis

W tym artykule wyjaśniono, jak zdiagnozować rzeczywistą lub postrzeganą utratę danych, która może wystąpić w usłudze Azure Managed Redis.

Uwaga / Notatka

Niektóre kroki rozwiązywania problemów w tym przewodniku obejmują instrukcje dotyczące uruchamiania poleceń usługi Redis i monitorowania metryk wydajności. Aby uzyskać więcej informacji, zobacz artykuły w sekcji Powiązana zawartość.

Częściowa utrata kluczy

Usługa Azure Managed Redis nie usuwa losowo kluczy po ich zapisaniu w pamięci. Usuwa klucze z powodu zasad wygasania, zasad eksmisji lub jawnych poleceń usuwania kluczy. Uruchom te polecenia przy użyciu interfejsu wiersza polecenia. Klucze zapisywane w podstawowym węźle usługi Azure Managed Redis mogą nie być natychmiast dostępne na replice. Dane są replikowane z podstawowej do repliki asynchronicznie i w sposób nieblokujący.

Jeśli klucze znikną z pamięci podręcznej, sprawdź następujące możliwe przyczyny:

Przyczyna Opis
Wygaśnięcie klucza Klucze są usuwane z powodu ustawionych na nich limitów czasu.
Usunięcie klucza Klucze są usuwane, gdy pamięć jest niska.
Usuwanie klucza Klienci usuwają klucze, uruchamiając jawne polecenia usuwania.
Replikacja asynchroniowa Klucze nie są dostępne w repliki z powodu opóźnień replikacji danych.

Wygaśnięcie klucza

Usługa Azure Managed Redis automatycznie usuwa klucz po upływie limitu czasu dla tego klucza. Aby uzyskać więcej informacji o wygaśnięciu klucza usługi Redis, zobacz dokumentację polecenia EXPIRE . Wartości limitu czasu można również ustawić przy użyciu poleceń SET, SETEX, GETSET i innych poleceń *STORE .

Aby zobaczyć, ile kluczy wygasło, użyj polecenia INFO . W Stats sekcji przedstawiono łączną liczbę wygasłych kluczy. Sekcja Keyspace zawiera więcej informacji na temat liczby kluczy z limitami czasu i średnią wartością limitu czasu.


# Stats

expired_keys:46583

# Keyspace

db0:keys=3450,expires=2,avg_ttl=91861015336

Sprawdź metryki diagnostyczne pamięci podręcznej, aby zobaczyć, czy istnieje korelacja między momentem, kiedy klucz zniknął, a skokiem liczby usuniętych kluczy.

Usunięcie klucza

Usługa Azure Managed Redis potrzebuje miejsca na pamięć do przechowywania danych. Usuwa klucze, aby zwolnić pamięć w razie potrzeby. Gdy wartości used_memory lub used_memory_rss w poleceniu INFO zbliżają się do skonfigurowanego ustawienia maxmemory, usługa Azure Managed Redis rozpoczyna eksmitowanie kluczy z pamięci na podstawie zasad pamięci podręcznej.

Monitoruj liczbę eksmitowanych kluczy przy użyciu polecenia INFO :

# Stats

evicted_keys:13224

Usuwanie klucza

Klienci redis uruchamiają polecenie DEL lub HDEL , aby usunąć klucze z usługi Azure Managed Redis. Śledzenie liczby operacji usuwania przy użyciu polecenia INFO . Jeśli uruchomiono polecenia DEL lub HDEL , są one wymienione w Commandstats sekcji .

# Commandstats

cmdstat_del:calls=2,usec=90,usec_per_call=45.00

cmdstat_hdel:calls=1,usec=47,usec_per_call=47.00

Replikacja asynchroniowa

Po włączeniu wysokiej dostępności w usłudze Azure Managed Redis usługa tworzy węzeł podstawowy i co najmniej jedną replikę. System kopiuje dane z podstawowego do repliki asynchronicznie przy użyciu procesu w tle. Aby uzyskać więcej informacji, zobacz dokumentację replikacji usługi Redis .

Ponieważ replikacja nie jest natychmiastowa, może wystąpić częściowa utrata danych, jeśli klienci często zapisują dane w usłudze Redis. Jeśli na przykład węzeł podstawowy ulegnie awarii po zapisaniu klucza przez klienta, ale zanim proces w tle go zreplikuje, klucz zostanie utracony, gdy replika stanie się nową podstawową.

Większościowa lub całkowita utrata kluczy

Jeśli większość lub wszystkie klucze znikną z pamięci podręcznej, sprawdź następujące możliwe przyczyny:

Przyczyna Opis
Czyszczenie kluczy Ktoś przeczyścił klucze ręcznie.
Awaria instancji Redis Serwer Redis jest niedostępny.

Opróżnianie klucza

Klienci mogą wywołać polecenie FLUSHDB lub FLUSHALL , aby usunąć wszystkie klucze z wystąpienia usługi Redis. Aby sprawdzić, czy klucze są opróżnione, użyj polecenia INFO . W Commandstats sekcji pokazano, czy którekolwiek FLUSH polecenie jest uruchamiane:

# Commandstats

cmdstat_flushall:calls=2,usec=112,usec_per_call=56.00

cmdstat_flushdb:calls=1,usec=110,usec_per_call=52.00

Niepowodzenie wystąpienia usługi Redis

Redis to magazyn danych w pamięci. Dane pozostają na maszynach fizycznych lub wirtualnych hostujących pamięć podręczną Redis Cache. Usługi Azure Managed Redis Cache oferują wysoką odporność na utratę danych, zapewniając domyślnie pamięci podręczne odporne na strefy dostępności. Gdy podstawowy fragment w tej pamięci podręcznej zakończy się niepowodzeniem, fragment repliki automatycznie przejmuje obsługę danych. Te maszyny wirtualne znajdują się w oddzielnych domenach błędów i aktualizacji, co minimalizuje prawdopodobieństwo, że obie maszyny staną się niedostępne w tym samym czasie. Jeśli wystąpi duża awaria centrum danych, maszyny wirtualne nadal mogą zostać wyłączone jednocześnie. W takich rzadkich przypadkach utracisz dane.

Użyj trwałości danych Redis i replikacji geograficznej, aby lepiej chronić dane przed tymi awariami infrastruktury.