Řešení potíží se ztrátou dat ve službě Azure Cache for Redis

Tento článek popisuje, jak diagnostikovat skutečné nebo domnělé ztráty dat, ke kterým může dojít ve službě Azure Cache for Redis.

Poznámka

Několik kroků pro řešení potíží v této příručce obsahuje pokyny ke spouštění příkazů Redis a monitorování různých metrik výkonu. Další informace a pokyny najdete v článcích v části Další informace .

Částečná ztráta klíčů

Azure Cache for Redis neodstraňuje náhodně klíče uložené v paměti. Odebírá však klíče v reakci na zásady vypršení platnosti, zásady vyřazení a explicitní příkazy k odstranění klíčů. Tyto příkazy můžete spouštět v konzole nebo prostřednictvím rozhraní příkazového řádku.

Klíče zapsané na primárním uzlu v instanci služby Azure Cache for Redis úrovně Premium nebo Standard také nemusí být okamžitě k dispozici v replice. Data se replikují z primárního uzlu do repliky asynchronně a bez blokování.

Pokud zjistíte, že klíče z mezipaměti zmizely, zkontrolujte následující možné příčiny:

Příčina Description
Vypršení platnosti klíče Klíče se odebírají kvůli nastaveným časovým limitům.
Vyřazení klíče Klíče se odebírají při zatížení paměti.
Odstranění klíče Klíče se odebírají explicitními příkazy k odstranění.
Asynchronní replikace Klíče nejsou k dispozici v replice kvůli zpoždění při replikaci dat.

Vypršení platnosti klíče

Azure Cache for Redis klíč automaticky odebere, pokud je klíč přiřazený časový limit a toto období uplynulo. Další informace o vypršení platnosti klíče Redis najdete v dokumentaci k příkazu EXPIRE . Hodnoty časového limitu lze také nastavit pomocí příkazů SET, SETEX, GETSET a dalších příkazů *STORE .

Pokud chcete získat statistiky o tom, kolik klíčů vypršelo, použijte příkaz INFO . Tato Stats část zobrazuje celkový počet klíčů, jejichž platnost vypršela. Tato Keyspace část obsahuje další informace o počtu klíčů s vypršením časových limitů a průměrné hodnotě časového limitu.


# Stats

expired_keys:46583

# Keyspace

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

Můžete se také podívat na diagnostické metriky pro vaši mezipaměť a zjistit, jestli existuje korelace mezi chybějícím klíčem a špičkou mezi prošlými klíči. Informace o používání keyspace oznámení nebo MONITOR ladění těchto typů problémů najdete v příloze Ladění chyb v prostoru klíčů Redis.

Vyřazení klíče

Azure Cache for Redis k ukládání dat vyžaduje místo v paměti. Vyprázdní klíče, aby se v případě potřeby uvolnila dostupná paměť. Když se used_memory nebo used_memory_rss hodnoty v příkazu INFO přiblíží nakonfigurovanému nastavení maxmemory, Azure Cache for Redis začne vyřazovat klíče z paměti na základě zásad mezipaměti.

Počet vyřazených klíčů můžete monitorovat pomocí příkazu INFO :

# Stats

evicted_keys:13224

Můžete se také podívat na diagnostické metriky pro vaši mezipaměť a zjistit, jestli existuje korelace mezi chybějícím klíčem a špičkou mezi vyřazenými klíči. Informace o použití oznámení v prostoru klíčů nebo monitorování k ladění těchto typů problémů najdete v příloze ladění chyb v oblasti Redis Keyspace.

Odstranění klíče

Klienti Redis můžou pomocí příkazu DEL nebo HDEL explicitně odebrat klíče z Azure Cache for Redis. Počet operací odstranění můžete sledovat pomocí příkazu INFO . Pokud se volají příkazy DEL nebo HDEL , budou uvedené v Commandstats části .

# Commandstats

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

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

Asynchronní replikace

Všechny Azure Cache for Redis instance na úrovni Standard nebo Premium jsou nakonfigurované s primárním uzlem a alespoň jednou replikou. Data se kopírují z primárního do repliky asynchronně pomocí procesu na pozadí. Web redis.io popisuje, jak replikace dat Redis obecně funguje. Ve scénářích, kdy klienti často zapisují do Redisu, může dojít k částečné ztrátě dat, protože replikace není okamžitá. Pokud například dojde k výpadku primárního klíče poté , co do něj klient zapíše klíč, ale proces na pozadí má šanci odeslat tento klíč do repliky, klíč se ztratí, když replika převezme nový primární klíč.

Větší nebo úplná ztráta klíčů

Pokud z mezipaměti zmizela většina klíčů nebo všechny klíče, zkontrolujte následující možné příčiny:

Příčina Description
Vyprázdnění kláves Klíče se vyprázdnily ručně.
Nesprávný výběr databáze Služba Azure Cache for Redis je nastavená tak, aby používala jinou než výchozí databázi.
Selhání instance Redis Server Redis není k dispozici.

Vyprázdnění kláves

Klienti můžou volat příkaz FLUSHDB k odebrání všech klíčů v jedné databázi nebo funkci FLUSHALL pro odebrání všech klíčů ze všech databází v mezipaměti Redis. Pokud chcete zjistit, jestli se klíče vyprázdnily, použijte příkaz INFO . Tato Commandstats část ukazuje, jestli byl některý z FLUSH příkazů volána:

# Commandstats

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

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

Nesprávný výběr databáze

Azure Cache for Redis ve výchozím nastavení používá db0 databázi. Pokud přepnete na jinou databázi (například db1) a pokusíte se z ní číst klíče, Azure Cache for Redis je tam nenajde. Každá databáze je logicky samostatná jednotka a obsahuje jinou datovou sadu. Pokud chcete použít jiné dostupné datové sady a vyhledat v nich klíče, použijte příkaz SELECT.

Selhání instance Redis

Redis je úložiště dat v paměti. Data se uchovávají na fyzických nebo virtuálních počítačích, které jsou hostiteli mezipaměti Redis. Instance služby Azure Cache for Redis na úrovni Basic běží pouze na jednom virtuálním počítači. Pokud je tento virtuální počítač mimo provoz, veškerá data uložená v mezipaměti se ztratí.

Mezipaměti na úrovních Standard a Premium nabízejí mnohem vyšší odolnost proti ztrátě dat díky použití dvou virtuálních počítačů v replikované konfiguraci. Pokud u takové mezipaměti dojde k selhání primárního uzlu, obsluhu dat automaticky převezme uzel repliky. Tyto virtuální počítače se nacházejí v samostatných doménách, aby se minimalizovalo riziko nedostupnosti obou z nich současně v případě selhání nebo aktualizace. V případě velkého výpadku datacentra však přesto může dojít k výpadku obou virtuálních počítačů. V těchto výjimečných případech dojde ke ztrátě dat.

Zvažte použití trvalosti dat Redis a geografické replikace ke zlepšení ochrany dat před těmito selháními infrastruktury.

Další informace

Další informace o předcházení ztrátě dat najdete v těchto článcích: