Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 14227|Odpověď: 1

[Redis] Redis dvě metody a principy setrvání

[Kopírovat odkaz]
Zveřejněno 24.08.2017 16:37:45 | | |
Redis je pokročilá databáze klíč-hodnota. Je to podobné jako memcached, ale data lze uchovávat a datové typy jsou bohaté. Existují řetězce, propojené seznamy, množiny a uspořádané kolekce. Podporuje výpočet sčítání, průniku a doplňování (rozdílu) kolekcí na straně serveru a také různé funkce třídění. Redis lze tedy také vnímat jako server datových struktur.
    Všechna data Redis jsou uložena do paměti a poté asynchronně uložena na disk čas od času (tomu se říká "poloperzistentní režim"); Každou změnu dat můžete také zapsat do souboru pouze pro připojení (AOF) (tomu se říká "režim plné perzistence").
První metodou je snímání souborů (filesnapshotting): Výchozí redis uchová data na disk ve formě snímku (binární soubor dump.rdb, tento název souboru lze specifikovat) a formát v konfiguračním souboru je: save N M znamená, že během N sekund redis přenese snapshot na disk, pokud dojde alespoň k M úpravám v redis. Samozřejmě můžeme také ručně provádět save nebo bgsave (asynchronní) pro pořízení snímků.

Zde je krátké představení, jak to funguje: Když Redis potřebuje přetrvávat, Redis rozvětví podproces; Potomkový proces zapisuje data do dočasného RDB souboru na disku; Když podproces dokončí zápis dočasného souboru, nahrazuje původní RDB, což má výhodu kopírování při zápisu

Existuje také metoda perzistence Append-only:filesnapshotting metoda. Když je redis abnormálně mrtvý, nedávná data se ztratí (množství ztracených dat závisí na konfiguraci vaší politiky uložení), což je její největší nevýhoda – když je obchodní objem velký, ztracených dat je hodně. Metoda pouze přidávat může způsobit veškerou ztrátu dat, ale výkon redis je horší. AOF lze během celého procesu zachovat, stačí jej zapnout v konfiguračním souboru (výchozí je no), pouze v appendonly yes. Po zapnutí AOF se pokaždé, když redis spustí příkaz ke změně dat, přidá do souboru AOF, a když se redis restartuje, soubor AOF se přečte pro "replay", aby se obnovil do posledního okamžiku před uzavřením redis.

Přepisování LOG: Jak se soubor AOF zvětšuje a zvětšuje se s úpravou dat, přičemž mnohé záznamy se mění v klíči. Redis má proto zajímavou vlastnost: rekonstruovat AOF soubor na pozadí, aniž by to ovlivnilo operaci na straně klienta. Spuštění příkazu BGREWRITEAOF kdykoli zaznamená nejkratší sekvenci příkazů v aktuální paměti na disk, a tyto příkazy mohou plně sestavit aktuální datovou situaci bez zbytečných změn (například změny stavu, čítače atd.), čímž se zmenší velikost souboru AOF. Takže při používání OF doporučuje redis také používat BGREWRITEAOF.

Existují tři způsoby, jak obnovit soubor AOF, viz konfigurační parametr appendfsync: appendfsync vždy volá fsync, aby se při každém zadání příkazu pro úpravu zaplatil do souboru AOF, což je velmi, velmi pomalé, ale také velmi bezpečné; appendfsync každý sekundu volá fsync, aby rychle přešel do AOF souboru, ale může ztratit data během sekundy; appendfsync nespoléhá na OS k obnově, Redis aktivně neobnovuje OV, což je nejrychlejší, ale zabezpečení je špatné. Ve výchozím nastavení se doporučuje obnovovat počet hodin za sekundu, aby se brala v úvahu jak rychlost, tak bezpečnost.

Může to být kvůli systémovým důvodům, že AOF je poškozený, redis už nemůže načíst tento Z OV, můžete postupovat podle níže uvedených kroků k opravě: Nejprve si udělejte zálohu souboru AOF a zkopírujte ji na jiné místo; Opravte původní OF soubor, vykonejte: $redis-check-aof –fix; Můžete použít příkaz diff –u, abyste zjistili, kde jsou soubory nekonzistentní před a po opravě. Restartujte službu Redis.

Jak funguje LOG Rewrite: Totéž používá copy-on-write: první redis odvětví podproces; Podřízený proces zapisuje nejnovější AOF do dočasného souboru; Rodičovský proces postupně zapisuje poslední provedené změny v paměti (v tuto chvíli je starý AOF stále zapsán a je bezpečné ho přepsat, pokud selže); Když podřízený proces dokončí přepis dočasného souboru, rodičovský proces obdrží signál a zapíše předchozí inkrementální změny v paměti na konec dočasného souboru. Redis přejmenuje starý OF soubor, přejmenuje dočasný soubor a začne zapisovat do nového OF.

Nakonec, pro jistotu (pád stroje nebo disku), nezapomeňte pravidelně zálohovat *rdb *.aof soubor generovaný pomocí filesnapshottingu nebo pouze Append-only na vzdáleném počítači. Používám crontab na SCP každou půlhodinu. Nepoužil jsem master-slave funkci v Redis, protože půlhodinová záloha by měla být v pohodě, a mám pocit, že je to trochu plýtvání strojem, pokud máte master-slave. To nakonec závisí na konkrétní aplikaci.




Předchozí:Redis má tři způsoby, jak začít
Další:Rozdíl mezi uloženou hrou a bgsave v redis
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com