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 omówiono sposób diagnozowania rzeczywistych lub postrzeganych strat danych, które mogą wystąpić w usłudze Azure Managed Redis.
Uwaga / Notatka
Kilka kroków rozwiązywania problemów w tym przewodniku zawiera instrukcje dotyczące uruchamiania poleceń usługi Redis i monitorowania różnych metryk wydajności. Aby uzyskać więcej informacji i instrukcji, zobacz artykuły w powiązanej zawartości.
Częściowa utrata kluczy
Usługa Azure Managed Redis nie usuwa losowo kluczy po ich zapisaniu w pamięci. Jednak usuwa klucze w odpowiedzi na polityki wygasania, polityki eksmisji i jawne polecenia usuwania kluczy. Te polecenia można uruchamiać za pomocą interfejsu wiersza polecenia.
Klucze zapisane w węźle podstawowym w wystąpieniu usługi Azure Managed Redis również mogą nie być dostępne w replice od razu. Dane są replikowane z lokalizacji podstawowej do repliki w sposób asynchroniczny i nie powodujący blokad.
Jeśli okaże się, że klucze zniknęły z pamięci podręcznej, sprawdź następujące możliwe przyczyny:
Przyczyna | Opis |
---|---|
Wygaśnięcie klucza | Klucze są usuwane z powodu ustawionych dla nich limitów czasu. |
Usunięcie klucza | Klucze są usuwane z powodu obciążenia pamięci. |
Usuwanie klucza | Klucze są usuwane za pomocą jawnych poleceń usunięcia. |
Replikacja asynchroniowa | Klucze nie są dostępne w replice z powodu opóźnień replikacji danych. |
Wygaśnięcie klucza
Usługa Azure Managed Redis automatycznie usuwa klucz, jeśli przypisano mu limit czasu i upływa ten okres. 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 uzyskać statystyki dotyczące liczby wygasłych kluczy, 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
Możesz przeanalizować metryki diagnostyczne pamięci podręcznej, aby sprawdzić, czy istnieje korelacja między momentem zgubienia klucza a wzrostem liczby eksmitowanych kluczy.
Usunięcie klucza
Usługa Azure Managed Redis wymaga miejsca na pamięć do przechowywania danych. W razie potrzeby usuwa klucze, aby zwolnić dostępną pamięć. 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.
Liczbę eksmitowanych kluczy można monitorować za pomocą polecenia INFO :
# Stats
evicted_keys:13224
Usuwanie klucza
Klienci redis mogą wydać polecenie DEL lub HDEL , aby jawnie usunąć klucze z usługi Azure Managed Redis. Liczbę operacji usuwania można śledzić za pomocą polecenia INFO . Jeśli wywołano polecenia DEL lub HDEL , zostaną one wyświetlone 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
Każde wystąpienie usługi Azure Managed Redis z włączoną wysoką dostępnością jest skonfigurowane z węzłem podstawowym i co najmniej jedną repliką. Dane są kopiowane z podstawowej do repliki asynchronicznie przy użyciu procesu w tle. W witrynie internetowej redis.io opisano ogólne działanie replikacji danych Redis. W scenariuszach, gdy klienci często zapisują dane w Redis, może wystąpić częściowa utrata danych, ponieważ replikacja nie gwarantuje natychmiastowości. Jeśli na przykład podstawowy ulegnie awarii po zapisaniu klucza przez klienta, ale zanim proces w tle będzie miał szansę wysłać ten klucz do repliki, klucz zostanie utracony, gdy replika przejmie rolę nowego podstawowego.
Większościowa lub całkowita utrata kluczy
Jeśli z pamięci podręcznej zniknęły prawie wszystkie lub wszystkie klucze, sprawdź następujące możliwe przyczyny:
Przyczyna | Opis |
---|---|
Czyszczenie kluczy | Klucze zostały przeczyszczone 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 dowiedzieć się, czy klucze zostały opróżnione, użyj polecenia INFO . W Commandstats
sekcji pokazano, czy którekolwiek FLUSH
polecenie zostało wywołane:
# 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 są przechowywane na maszynach fizycznych lub wirtualnych hostujących pamięć podręczną Redis Cache. Pamięci podręczne Azure Managed Redis Cache zapewniają wysoką odporność na utratę danych, zapewniając domyślnie odporne na strefy pamięci podręczne. Gdy podstawowy fragment w takiej pamięci podręcznej ulegnie awarii, fragment repliki automatycznie przejmie obsługę danych. Te maszyny wirtualne znajdują się w oddzielnych domenach, aby zminimalizować prawdopodobieństwo jednoczesnego wystąpienia błędów i aktualizacji oraz niedostępności obu tych maszyn. Jeśli jednak wystąpi duża awaria centrum danych, maszyny wirtualne mogą nadal spaść razem. W tych rzadkich przypadkach dane zostaną utracone.
Rozważ użycie trwałości danych usługi Redis i replikacji geograficznej, aby zwiększyć ochronę danych przed tymi awariami infrastruktury.