Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.