Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 14227|Odpoveď: 1

[Redis] Redis dve metódy a princípy perzistencie

[Kopírovať odkaz]
Zverejnené 24. 8. 2017 16:37:45 | | |
Redis je pokročilá databáza kľúč-hodnota. Je to podobné ako memcached, ale dáta sa dajú zachovať a dátové typy sú bohaté. Existujú reťazce, prepojené zoznamy, množiny a usporiadané kolekcie. Podporuje výpočet sčítania, prieniku a dopĺňania (rozdielu) kolekcií na strane servera a tiež rôzne triediace funkcie. Redis teda možno vnímať aj ako server dátových štruktúr.
    Všetky dáta Redis sa ukladajú do pamäte a potom sa asynchrónne ukladajú na disk z času na čas (tomu sa hovorí "semi-persistentný režim"); Každú zmenu dát môžete tiež zapísať do súboru Append Only (AOF) (nazýva sa to "režim plnej perzistencie").
Prvou metódou je natáčanie súborov: Predvolený redis uchováva dáta na disku vo forme snímky (binárny súbor, dump.rdb, tento názov súboru je možné špecifikovať) a formát v konfiguračnom súbore je: uložiť N M znamená, že do N sekúnd redis urobí snímku na disk, ak v redis dôjde aspoň k M. úpravám. Samozrejme, môžeme tiež manuálne vykonať save alebo bgsave (asynchrónne) na získanie snapshotov.

Tu je krátky úvod do toho, ako to funguje: Keď Redis potrebuje pretrvať, Redis oddelí podproces; Potomkový proces zapíše dáta do dočasného RDB súboru na disku; Keď podproces dokončí zápis dočasného súboru, nahradí pôvodný RDB, ktorý má výhodu kopírovania pri zápise

Existuje aj metóda perzistencie Append-only:filesnapshotting (Append-only:filesnapshotting). Keď je redis abnormálne mŕtvy, nedávne dáta sa stratia (množstvo stratených dát závisí od konfigurácie vašej politiky ukladania), takže toto je jej najväčšia nevýhoda – keď je obchodný objem veľký, stratených dát je veľa. Metóda iba pridávania dokáže dosiahnuť úplnú stratu dát, ale výkon redis je horší. AOF môže byť zachované počas celého procesu, stačí ho zapnúť len v konfiguračnom súbore (predvolene je nie), len dodatočne áno. Po zapnutí AOF sa zakaždým, keď redis vykoná príkaz na úpravu dát, pridá do AOF súboru, a keď sa redis reštartuje, AOF súbor sa prečíta na "replay", aby sa obnovil do posledného momentu pred zatvorením redisu.

Prepisovanie LOG: Ako sa súbor AOF zväčšuje a zväčšuje s úpravou dát, mnohé z nich sa menia v kľúči. Preto má redis zaujímavú vlastnosť: rekonštruovať AOF súbor na pozadí bez ovplyvnenia operácie na strane klienta. Vykonanie príkazu BGREWRITEAOF kedykoľvek zapíše najkratšiu sekvenciu príkazov v aktuálnej pamäti na disk a tieto príkazy dokážu plne zostaviť aktuálnu dátovú situáciu bez zbytočných zmien (ako sú zmeny stavu, čítača a pod.), čím sa zmenšuje veľkosť súboru AOF. Takže pri používaní OF Redis odporúča používať aj BGREWRITEAOF.

Existujú tri spôsoby, ako obnoviť AOF súbor, pozri konfiguračný parameter appendfsync: appendfsync vždy volá fsync, aby sa započítal do AOF súboru zakaždým, keď sa zadá príkaz na úpravu, čo je veľmi, veľmi pomalé, ale zároveň veľmi bezpečné; appendfsync každých sekúnd volá fsync, aby rýchlo prešiel do AOF súboru, ale môže stratiť dáta do sekundy; appendfsync sa nespolieha na obnovu operačného systému, redis aktívne neobnovuje OV, čo je najrýchlejšie, ale bezpečnosť je slabá. Predvolene sa odporúča obnovovanie za sekundu, aby sa zohľadnila rýchlosť aj bezpečnosť.

Môže to byť spôsobené systémovými dôvodmi, že AOF je poškodený, redis už nemôže načítať tento Z OV, môžete postupovať podľa nasledujúcich krokov na opravu: Najprv si urobte zálohu AOF súboru a skopírujte ho na iné miesto; Opravte pôvodný OF súbor, vykonáte: $redis-check-aof –fix; Môžete použiť príkaz diff –u, aby ste videli, kde sú súbory nekonzistentné pred a po oprave. Reštartujte službu Redis.

Ako funguje LOG Rewrite: To isté používa copy-on-write: prvý redis rozvetví podproces; Child proces zapíše najnovší AOF do dočasného súboru; Rodičovský proces postupne zapisuje najnovšie vykonané zmeny v pamäti (v tomto čase sa starý AOF stále zapisuje a je bezpečné ho prepísať, ak zlyhá); Keď podprocesný proces dokončí prepisovanie dočasného súboru, rodičovský proces dostane signál a zapíše predchádzajúce inkrementálne zmeny v pamäti na koniec dočasného súboru. Redis premenuje starý OF súbor, premenuje dočasný súbor a začne zapisovať do nového OF.

Nakoniec, pre prípad pádu počítača alebo disku), nezabudnite pravidelne zálohovať *rdb *.aof súbor generovaný pomocou filesnapshottingu alebo len Append-only na vzdialený počítač. Každých pol hodiny používam crontab na SCP. Nepoužil som redisovu funkciu master-slave, pretože polhodinová záloha by mala stačiť, a mám pocit, že je to trochu plytvanie strojom, ak máte master-slave. To nakoniec závisí od aplikácie.




Predchádzajúci:Redis má tri spôsoby, ako začať
Budúci:Rozdiel medzi save a bgsave v redis
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com