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

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

Poznámka

Součástí několika kroků pro řešení potíží v tomto průvodci jsou pokyny ke spuš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 se klíče po uložení do paměti náhodně neodstraňovat. Klíče se ale odeberou v reakci na zásady vypršení platnosti nebo vypuštění a explicitní příkazy pro odstranění klíče. Klíče, které byly zapsány do primárního uzlu v instanci Premium nebo standardu Azure Cache for Redis, nemusí být na replice ihned dostupné. Data se replikují z primární repliky do repliky asynchronním a neblokujícím způsobem.

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 odebraly kvůli nastaveným časovým limitům.
Vycházení klíče Klíče se odebraly při paměťovém tlaku.
Odstranění klíče Klíče se odebraly explicitními příkazy pro odstranění.
Asynchronní replikace Klíče nejsou v replice k dispozici kvůli zpoždění replikace dat.

Vypršení platnosti klíče

Azure Cache for Redis klíč automaticky odebere, pokud je klíč přiřazený k časovému limitu a tento časový limit uplynul. Další informace o vypršení platnosti klíče Redis najdete v dokumentaci k příkazům EXPIRE. Hodnoty časového limitu je také možné nastavit pomocí příkazů SET, SETEX, GETSETa * dalších příkazů STORE.

Pokud chcete získat statistiku o tom, kolik klíčů vypršelo, použijte příkaz INFO. V Stats části se zobrazuje celkový počet klíčů, jejichž platnost vypršela. Oddíl obsahuje další informace o počtu klíčů s časovými limity a Keyspace průměrnou hodnotou č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 vaší mezipaměti a zjistit, jestli existuje korelace mezi chybějícím klíčem a špičkou v klíčích s vypršenou platností. Informace o použití oznámení prostorů klíčů najdete v dodatku k ladění chyb v prostoru klíčů Redis nebo v tématu MONITOROVÁNÍ k ladění těchto typů problémů.

Vycházení klíče

Azure Cache for Redis k ukládání dat vyžaduje paměťový prostor. V případě potřeby vyžádá klíče, aby se dostupná paměť uchytla. Když se used_memory nebo used_memory_rss v příkazu INFO přiblíží nakonfigurovanému nastavení maxmemory, Azure Cache for Redis začne vyřazení klíčů 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 vaší mezipaměti a zjistit, jestli existuje korelace mezi chybějícím klíčem a špičkou vyřazených klíčů. Informace o použití oznámení prostorů klíčů najdete v dodatku k ladění chyb v prostoru klíčů Redis nebo v tématu MONITOROVÁNÍ k ladění těchto typů problémů.

Odstranění klíče

Klienti Redis mohou 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 byly volány 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

Každá Azure Cache for Redis ve vrstvě Standard nebo Premium je nakonfigurovaná s primárním uzlem a alespoň jednou replikou. Data se kopírují z primární repliky do repliky asynchronně pomocí procesu na pozadí. Tento redis.io popisuje, jak replikace dat Redis funguje obecně. Ve scénářích, kdy klienti zapisují do Redisu často, může dojít k částečné ztrátě dat, protože tato replikace není zaručena okamžitě. Pokud například primární databáze po tom, co do něj klient zapíše klíč, ale před tím, než proces na pozadí bude mít možnost tento klíč odeslat do repliky, ztratí se klíč, když replika převezme jako novou primární repliku.

Hlavní 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
Vyprazdnění klíče Klíče byly ručně vyprázdněny.
Nesprávný výběr databáze Azure Cache for Redis je nastavená na použití jiné než výchozí databáze.
Selhání instance Redis Server Redis není k dispozici.

Vyprazdnění klíče

Klienti mohou volat příkaz FLUSHDB a odebrat všechny klíče v jedné databázi nebo flushall a odebrat tak všechny klíče ze všech databází v mezipaměti Redis. Pokud chcete zjistit, jestli jsou klíče vyprázdněné, použijte příkaz INFO. Oddíl Commandstats ukazuje, jestli byl volán některý z příkazů FLUSH:

# 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 používá ve výchozím nastavení databázi db0. 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 oddělená jednotka a obsahuje jinou datovou sadu. Pomocí příkazu SELECT použijte jiné dostupné databáze a vyhledejte klíče v každé z nich.

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é hostí mezipaměť Redis. Instance Azure Cache for Redis na úrovni Basic běží jenom na jednom virtuálním počítači. Pokud je virtuální počítač v pořádku, všechna data, která jste uložili do 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če v replikované konfiguraci. Pokud primární uzel v takové mezipaměti selže, převezme uzel repliky automaticky do služby data. Tyto virtuální počítače se kvůli chybám a aktualizacím nacházejí v samostatných doménách, aby se minimalizovala pravděpodobnost, že budou oba počítače nedostupné současně. Pokud ale dojde k závažnému výpadku datacentra, můžou se virtuální počítače i tak pohromadě vypnout. V těchto výjimečných případech se vaše data ztratí.

Zvažte použití trvalosti dat Redis a geografické replikace ke zlepšení ochrany dat proti těmto selháním infrastruktury.

Další informace