Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje, jak diagnostikovat částečnou nebo úplnou ztrátu dat, ke které dochází ve službě Azure Cache for Redis.
Důležité
Služba Azure Cache for Redis oznámila časovou osu vyřazení všech skladových položek. Doporučujeme přesunout stávající instance Azure Cache for Redis do Azure Managed Redis , jakmile budete moct.
Další podrobnosti o ukončení podpory:
Částečná ztráta klíče
Azure Cache for Redis náhodně neodstraňuje klíče, jakmile jsou uloženy v paměti, ale odebere je podle zásad vypršení platnosti, zásad vyřazení a explicitních příkazů pro odstranění. Tyto příkazy můžete spustit v konzole nebo prostřednictvím rozhraní příkazového řádku Redis.
Klíče, které jsou zapsány do primárního uzlu v instanci Azure Redis úrovně Premium nebo Standard, nemusí být okamžitě k dispozici na replice. Data se replikují z primární repliky do repliky asynchronním a neblokovaným způsobem.
Pokud některé klíče z mezipaměti zmizí, zkontrolujte následující možné příčiny:
| Příčina | Popis |
|---|---|
| Vypršení platnosti klíče | Klíče byly odebrány kvůli vypršení časových limitů nastavených na ně. |
| Vyřazení klíče | Klíče byly odstraněny pod tlakem paměti. |
| Odstranění klíče | Klíče byly odebrány explicitními příkazy k odstranění. |
| Asynchronní replikace | Klíče nebyly na replice dostupné kvůli zpoždění replikace dat. |
Vypršení platnosti klíče
Azure Cache for Redis automaticky odebere klíč, pokud je mu nastaven časový limit a tento čas vyprší. Další informace o vypršení platnosti klíče Redis najdete v dokumentaci k příkazu Redis EXPIRE . Hodnoty časového limitu lze nastavit také pomocí příkazů SET, SETEX, GETSET a dalších *STORE příkazů.
Pokud chcete získat statistiky o tom, kolik klíčů vypršelo, použijte příkaz INFO . V Stats části se zobrazuje celkový počet klíčů, jejichž platnost vypršela. V Keyspace části najdete další informace o počtu klíčů s časovými limity a průměrné hodnotě časového limitu.
# Stats
expired_keys:46583
# Keyspace
db0:keys=3450,expires=2,avg_ttl=91861015336
Vyřazení klíče
Azure Cache for Redis vyžaduje paměťový prostor k ukládání dat a vyprázdnění klíčů, aby se v případě potřeby uvolnila dostupná paměť. Když se hodnoty used_memory nebo used_memory_rss blíží nakonfigurovanému nastavení maxmemory, Azure 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
Odstranění klíče
Klienti Redis můžou vydávat příkazy Redis DEL nebo HDEL k explicitní odebrání klíčů z Azure Redis. Počet operací odstranění můžete sledovat pomocí příkazu INFO . Jestliže byly volány příkazy DEL nebo HDEL, jsou uvedeny v sekci Commandstats.
# 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
Instanční úrovně Azure Cache for Redis ve verzích Standard nebo Premium jsou nakonfigurované s primárním uzlem a minimálně jednou replikou. Data se kopírují z primární repliky asynchronně pomocí procesu na pozadí.
Replikace Redis na webu Redis popisuje, jak replikace dat Redis obecně funguje. Ve scénářích, kdy klienti často zapisují do Redis, může dojít k částečné ztrátě dat, protože replikace není navržená tak, aby byla okamžitá.
Například pokud primární server přestane fungovat poté, co klient zapíše klíč, ale předtím, než má proces na pozadí šanci odeslat tento klíč do repliky, klíč se ztratí, když replika převezme funkci nového primárního serveru.
Úplná ztráta klíče
Pokud většina klíčů z mezipaměti zmizí, zkontrolujte následující možné příčiny:
| Příčina | Popis |
|---|---|
| Vyprazdňování kláves | Klíče byly ručně odstraněny. |
| Nesprávný výběr databáze | Azure Redis je nastavený tak, aby používal nedefaultní databázi. |
| Selhání instance Redis | Server Redis není k dispozici. |
Vyprazdňování kláves
Klienti Azure Redis můžou volat příkaz Redis FLUSHDB , aby odebrali všechny klíče v jedné databázi nebo FLUSHALL a odebrali všechny klíče ze všech databází v mezipaměti Redis. Pokud chcete zjistit, jestli byly klíče vyprázdněné, použijte příkaz INFO . Tato Commandstats část ukazuje, jestli byl volán některý z FLUSH příkazů.
# 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
Každá databáze je logicky samostatná jednotka a obsahuje jinou datovou sadu. Azure Cache for Redis ve výchozím nastavení používá db0 databázi. Pokud přepnete do jiné databáze, například db1 a pokusíte se z ní číst klíče, Azure Redis je nenajde. Pomocí příkazu Redis SELECT vyhledejte klíče v jiných dostupných databázích.
Selhání instance Redis
Redis uchovává data v paměti na fyzických nebo virtuálních počítačích, které hostují mezipaměť Redis. Instance služby Azure Cache for Redis úrovně Basic běží na pouze jednom virtuálním počítači. Pokud tento virtuální počítač přestane fungovat, ztratí se všechna data uložená v mezipaměti.
Mezipaměti na úrovních Standard a Premium nabízejí vyšší odolnost proti ztrátě dat pomocí 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 pro chyby a aktualizace, aby se minimalizovala pravděpodobnost, že oba virtuální počítače nebudou najednou dostupné. Pokud dojde k výpadku velkého datacentra, může ale 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 a geografické replikace ke zlepšení ochrany dat před selháními infrastruktury.