Megosztás a következőn keresztül:


Az Azure Cache for Redis adatvesztéssel járó hibáinak elhárítása

Ez a cikk az Azure Cache for Redisben előforduló részleges vagy teljes adatvesztés diagnosztizálását ismerteti.

Fontos

Az Azure Cache for Redis bejelentette az összes termékváltozat kivonási ütemtervét. Javasoljuk, hogy a meglévő Azure Cache for Redis-példányokat mihamarabb áthelyezhesse az Azure Managed Redisbe .

További részletek a nyugdíjba vonulásról:

Részleges kulcsvesztés

Az Azure Cache for Redis nem törli véletlenszerűen a kulcsokat a memóriában való tárolás után, de eltávolítja a kulcsokat a lejárati szabályzatokra, a kiürítési szabályzatokra és a explicit kulcstörlési parancsokra válaszul. Ezeket a parancsokat a konzolon vagy a Redis parancssori felületén futtathatja.

Előfordulhat, hogy egy Prémium vagy Standard Azure Redis-példány elsődleges csomópontjára írt kulcsok nem érhetők el azonnal a replikán. Az adatok replikálása az elsődlegesről a replikára aszinkron és nem tiltó módon történik.

Ha egyes kulcsok eltűnnek a gyorsítótárból, ellenőrizze az alábbi lehetséges okokat:

Ok Leírás
Kulcs lejárata Eltávolították a kulcsokat az időkorlátok miatt, amelyek be lettek állítva rájuk.
Kulcs kilakoltatás A kulcsok memóriaterhelés alatt el lettek távolítva.
Kulcs törlése A kulcsokat explicit törlési parancsok távolították el.
Aszinkron replikáció A kulcsok nem voltak elérhetők replikán az adatreplikációs késések miatt.

Kulcs lejárata

Az Azure Cache for Redis automatikusan eltávolít egy kulcsot, ha a kulcshoz időtúllépés van rendelve, és ez az időszak lejárt. A Redis-kulcs lejáratával kapcsolatos további információkért tekintse meg a Redis EXPIRE parancs dokumentációját. Az időtúllépési értékek a SET, a SETEX, a GETSET és más *STORE parancsok használatával is beállíthatók.

Ha statisztikákat szeretne kapni arról, hogy hány kulcs járt le, használja az INFO parancsot. A Stats szakasz a lejárt kulcsok teljes számát mutatja. A Keyspace szakasz további információt nyújt az időtúllépéssel rendelkező kulcsok számáról és az átlagos időtúllépési értékről.

# Stats

expired_keys:46583

# Keyspace

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

Kulcs kizárása

Az Azure Cache for Redis memóriaterületet igényel az adatok tárolásához és a kulcsok kiürítéséhez, hogy szükség esetén felszabadítsa a rendelkezésre álló memóriát. Amikor az used_memory vagy used_memory_rss értékek megközelítik a konfigurált maxmemory beállítást, az Azure Redis gyorsítótárszabályzat alapján elkezdi kiüríteni a kulcsokat a memóriából.

A kiürített kulcsok számát az INFO paranccsal figyelheti.

# Stats

evicted_keys:13224

Kulcs törlése

A Redis-ügyfelek kiadhatják a Redis DEL - vagy HDEL-parancsokat , hogy explicit módon eltávolítsák a kulcsokat az Azure Redisből. A törlési műveletek számát az INFO paranccsal követheti nyomon. Ha DEL vagy HDEL parancsokat hívtak meg, azok a Commandstats szakaszban szerepelnek.

# Commandstats

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

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

Aszinkron replikáció

A Standard vagy Prémium szintű Azure Cache for Redis-példányok elsődleges csomóponttal és legalább egy replikával vannak konfigurálva. A rendszer egy háttérfolyamat használatával aszinkron módon másolja az adatokat az elsődlegesről egy replikára.

A Redis-replikáció a Redis webhelyén leírja, hogyan működik a Redis-adatreplikálás általában. Olyan helyzetekben, amikor az ügyfelek gyakran írnak a Redisbe, részleges adatvesztés fordulhat elő, mert a replikáció nem azonnali.

Ha például az elsődleges lemegy, miután egy ügyfél egy kulcsot ír hozzá, de mielőtt a háttérfolyamat elküldené a kulcsot a replikának, a kulcs elveszik, amikor a replika átveszi az új elsődleges kulcsot.

Teljes kulcsvesztés

Ha a legtöbb vagy az összes kulcs eltűnik a gyorsítótárból, ellenőrizze az alábbi lehetséges okokat:

Ok Leírás
Kulcs ürítése A kulcsokat manuálisan törölték.
Helytelen adatbázis-kijelölés Az Azure Redis egy nem hibás adatbázis használatára van beállítva.
Redis-példány hibája A Redis-kiszolgáló nem érhető el.

Kulcs törlése

Az Azure Redis-ügyfelek meghívhatják a Redis FLUSHDB parancsot egy adatbázis összes kulcsának eltávolításához, vagy a FLUSHALL parancsot, hogy eltávolítsák az összes kulcsot a Redis-gyorsítótárban lévő összes adatbázisból. Az INFO parancs használatával ellenőrizheti, hogy a kulcsok kiürítődtek-e. A Commandstats szakasz bemutatja, hogy valamelyik FLUSH parancsot meghívták-e.

# Commandstats

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

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

Helytelen adatbázis-kijelölés

Minden adatbázis egy logikailag különálló egység, és eltérő adathalmazt tartalmaz. Az Azure Cache for Redis alapértelmezés szerint az adatbázist db0 használja. Ha másik adatbázisra vált, például db1 megpróbál kulcsokat olvasni belőle, az Azure Redis nem találja őket. A Redis SELECT paranccsal kulcsokat kereshet más elérhető adatbázisokban.

Redis-példány hibája

A Redis a Redis-gyorsítótárat futtató fizikai vagy virtuális gépeken (virtuális gépeken) tárolja az adatokat a memóriában. Egy Alapszint Azure Cache for Redis-példány csak egyetlen virtuális gépen fut. Ha a virtuális gép leáll, a gyorsítótárban tárolt összes adat elveszik.

A standard és a prémium szintű gyorsítótárak nagyobb rugalmasságot biztosítanak az adatvesztés ellen két virtuális gép replikált konfigurációban való használatával. Ha egy ilyen gyorsítótár elsődleges csomópontja meghibásodik, a replikacsomópont automatikusan átveszi az adatok kiszolgálását.

Ezek a virtuális gépek különálló tartományokban találhatók a hibák és frissítések esetében, hogy minimalizálják annak esélyét, hogy mindkét virtuális gép egyszerre elérhetetlenné váljon. Ha azonban jelentős adatközpont-kimaradás történik, mindkét virtuális gép leállhat. Ezekben a ritka esetekben az adatok elvesznek. Fontolja meg az adatmegőrzés és a georeplikálás használatát az infrastruktúra hibái elleni adatvédelem javítása érdekében.