Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver hur du diagnostiserar faktisk eller upplevd dataförlust som kan inträffa i Azure Managed Redis.
Anmärkning
Vissa felsökningssteg i den här guiden innehåller instruktioner för att köra Redis-kommandon och övervaka prestandamått. Mer information finns i artiklarna i Relaterat innehåll.
Partiell förlust av nycklar
Azure Managed Redis tar inte bort nycklar slumpmässigt när de har lagrats i minnet. Den tar bort nycklar på grund av förfalloprinciper, borttagningsprinciper eller explicita kommandon för borttagning av nycklar. Kör dessa kommandon med hjälp av CLI. Nycklar som skrivits till den primära noden i en Azure Managed Redis-instans kanske inte är tillgängliga på en replik direkt. Data replikeras från den primära till repliken asynkront och på ett icke-blockerande sätt.
Om nycklarna försvinner från cacheminnet kontrollerar du följande möjliga orsaker:
| Orsak | Beskrivning |
|---|---|
| Nyckel förfallodatum | Nycklar tas bort på grund av tidsgränser som angetts för dem. |
| Nyckelavhysning | Nycklar tas bort när minnet är lågt. |
| Nyckelborttagning | Klienter tar bort nycklar genom att köra explicita borttagningskommandon. |
| Asynkron replikering | Nycklar är inte tillgängliga på en replik på grund av datareplikeringsfördröjningar. |
Nyckelns utgångsdatum
Azure Managed Redis tar bort en nyckel automatiskt när tidsgränsen för den nyckeln skickas. Mer information om förfallodatum för Redis-nycklar finns i dokumentationen för EXPIRE-kommandot . Du kan också ange timeout-värden med hjälp av KOMMANDONa SET, SETEX, GETSET och andra *STORE .
Om du vill se hur många nycklar som har upphört att gälla använder du kommandot INFO . Avsnittet Stats visar det totala antalet utgångna nycklar. Avsnittet Keyspace innehåller mer information om antalet nycklar med timeouter och det genomsnittliga timeout-värdet.
# Stats
expired_keys:46583
# Keyspace
db0:keys=3450,expires=2,avg_ttl=91861015336
Kontrollera diagnostikmåtten för cacheminnet för att se om det finns en korrelation mellan när nyckeln försvann och en topp i borttagna nycklar.
Nyckelavhysning
Azure Managed Redis behöver minnesutrymme för att lagra data. Det tar bort nycklar för att frigöra minne när det behövs. När used_memory - eller used_memory_rss-värdena i INFO-kommandot närmar sig den konfigurerade maxmemory-inställningen börjar Azure Managed Redis ta bort nycklar från minnet baserat på cacheprincip.
Övervaka antalet borttagna nycklar med hjälp av INFO-kommandot :
# Stats
evicted_keys:13224
Nyckelborttagning
Redis-klienter kör KOMMANDOT DEL eller HDEL för att ta bort nycklar från Azure Managed Redis. Spåra antalet borttagningsåtgärder med hjälp av KOMMANDOT INFO . Om DEL - eller HDEL-kommandona kördes visas de i avsnittet Commandstats .
# Commandstats
cmdstat_del:calls=2,usec=90,usec_per_call=45.00
cmdstat_hdel:calls=1,usec=47,usec_per_call=47.00
Asynkron replikering
När du aktiverar hög tillgänglighet i Azure Managed Redis skapar tjänsten en primär nod och minst en replik. Systemet kopierar data från den primära till repliken asynkront med hjälp av en bakgrundsprocess. Mer information finns i dokumentationen för Redis-replikering .
Eftersom replikeringen inte är omedelbar kan du uppleva partiell dataförlust om klienter skriver till Redis ofta. Om den primära noden till exempel misslyckas när en klient skriver en nyckel, men innan bakgrundsprocessen replikerar den, går nyckeln förlorad när repliken blir den nya primära.
Större eller fullständig förlust av nycklar
Om de flesta eller alla nycklar försvinner från cacheminnet kontrollerar du följande möjliga orsaker:
| Orsak | Beskrivning |
|---|---|
| Nyckelspolning | Någon rensade nycklarna manuellt. |
| Redis-instansfel | Redis-servern är inte tillgänglig. |
Rensning av nycklar
Klienter kan anropa kommandot FLUSHDB eller FLUSHALL för att ta bort alla nycklar från Redis-instansen. Om du vill kontrollera om nycklarna har tömts använder du kommandot INFO . Avsnittet Commandstats visar om något av FLUSH kommandona körs:
# Commandstats
cmdstat_flushall:calls=2,usec=112,usec_per_call=56.00
cmdstat_flushdb:calls=1,usec=110,usec_per_call=52.00
Redis-instansfelaktighet
Redis är ett minnesinternt datalager. Data finns kvar på de fysiska eller virtuella datorer (VM) som är värdar för Redis-cachen. Azure Managed Redis-cacher ger hög återhämtning mot dataförlust genom att tillhandahålla zontåliga cacheminnen som standard. När den primära fragmentet i cacheminnet misslyckas tar replikskärvan automatiskt över för att hantera data. Dessa virtuella datorer finns i separata domäner för fel och uppdateringar, vilket minimerar risken för att båda blir otillgängliga samtidigt. Om ett större datacenter avbrott inträffar, kan de virtuella datorerna fortfarande gå ner tillsammans. I dessa sällsynta fall förlorar du dina data.
Använd Redis-datapersistence och geo-replikering för att bättre skydda dina data mot dessa infrastrukturfel.