Redis yra išplėstinė raktų ir reikšmių duomenų bazė. Tai panašu į memcached, tačiau duomenys gali būti išlikti, o duomenų tipai yra turtingi. Yra eilutės, susieti sąrašai, rinkiniai ir užsakyti rinkiniai. Jis palaiko rinkinių sumavimo, susikirtimo ir papildymo (skirtumo) serverio pusėje apskaičiavimą, taip pat palaiko įvairias rūšiavimo funkcijas. Taigi Redis taip pat gali būti vertinamas kaip duomenų struktūros serveris. Visi "Redis" duomenys saugomi atmintyje ir kartkartėmis asinchroniškai saugomi diske (tai vadinama "pusiau nuolatiniu režimu"); Taip pat kiekvieną duomenų pakeitimą galite įrašyti į tik pridėti failą (AOF) (tai vadinama "visiško patvarumo režimu"). Pirmasis metodas yra failų momentinė nuotrauka: numatytasis redis išliks duomenis į diską momentinės nuotraukos pavidalu (dvejetainis failas, dump.rdb, galima nurodyti šį failo pavadinimą), o konfigūracijos failo formatas yra: išsaugoti N M reiškia, kad per N sekundžių redis padarys momentinę nuotrauką į diską, jei bent M pakeitimai įvyks pakartotinai. Žinoma, taip pat galime rankiniu būdu atlikti išsaugojimą arba bgsave (asinchroninį), kad padarytume momentines nuotraukas.
Štai trumpas įvadas į tai, kaip tai veikia: Kai Redis turi išlikti, Redis išsišakoja vaiko procesą; Vaiko procesas įrašo duomenis į laikiną RDB failą diske; Kai antrinis procesas baigia rašyti laikinąjį failą, jis pakeičia pradinį RDB, kuris turi kopijavimo rašymo pranašumą
Taip pat yra atkaklumo metodas Tik pridėjimas:failų momentinės nuotraukos metodas Kai redis yra neįprastai miręs, naujausi duomenys bus prarasti (prarastų duomenų kiekis priklauso nuo jūsų išsaugojimo politikos konfigūracijos), todėl tai yra didžiausias jo trūkumas, kai verslo apimtis yra didelė, prarastų duomenų yra daug. Tik pridėjimo metodas gali pasiekti visus duomenų praradimus, tačiau redis našumas yra prastesnis. AOF gali būti išlikęs viso proceso metu, jį reikia įjungti tik konfigūracijos faile (numatytasis yra ne), pridėti tik taip Įjungus AOF, kiekvieną kartą, kai redis vykdo komandą modifikuoti duomenis, jis bus įtrauktas į aof failą, o paleidus redis iš naujo, AOF failas bus nuskaitytas "pakartoti", kad būtų atkurtas iki paskutinės akimirkos prieš uždarant redis.
LOG perrašymas Kai AOF failas tampa vis didesnis ir didesnis, kai duomenys modifikuojami, daugelis jų įrašo pakeitimus rakte. Todėl redis turi įdomią savybę: rekonstruoti AOF failą fone, nepažeidžiant kliento pusės operacijos. Bet kuriuo metu vykdant BGREWRITEAOF komandą, į diską bus įrašyta trumpiausia komandų seka dabartinėje atmintyje, o šios komandos gali visiškai sukonstruoti esamą duomenų situaciją be nereikalingų pakeitimų (pvz., būsenos pakeitimų, skaitiklio pakeitimų ir kt.), sumažinant AOF failo dydį. Taigi, naudojant OF, redis rekomenduoja naudoti ir BGREWRITEAOF.
Yra trys būdai, kaip atnaujinti AOF failą, žr. konfigūracijos parametrą appendfsync: appendfsync visada kviečia fsync praplauti į AOF failą kiekvieną kartą, kai pateikiama modifikavimo komanda, kuri yra labai, labai lėta, bet taip pat labai saugi; appendfsync everysec kviečia fsync kas sekundę, kad greitai praplautų į AOF failą, bet gali prarasti duomenis per sekundę; appendfsync ne pasikliauja OS atnaujinti, redis aktyviai neatnaujina OV, kuris yra greičiausias, tačiau saugumas yra prastas. Pagal numatytuosius nustatymus rekomenduojama atnaujinti per sekundę, kad būtų atsižvelgiama ir į greitį, ir į saugumą.
Gali būti, kad dėl sistemos priežasčių AOF yra sugadintas, redis nebegali įkelti šio OF OV, galite atlikti toliau nurodytus veiksmus, kad tai ištaisytumėte: Pirmiausia sukurkite atsarginę AOF failo kopiją ir nukopijuokite jį į kitą vietą; Pataisykite originalų OF failą, vykdykite: $redis-check-aof –fix; Galite naudoti komandą diff –u, kad pamatytumėte, kur failai yra nenuoseklūs prieš ir po taisymo. Iš naujo paleiskite "Redis" paslaugą.
Kaip veikia LOG Rewrite: Tas pats naudoja copy-on-write: pirmiausia redis išsišakos antrinį procesą; Vaiko procesas įrašo naujausią AOF į laikinąjį failą; Pirminis procesas palaipsniui rašo naujausius įvykdytus atminties pakeitimus (šiuo metu senasis AOF vis dar rašomas, o jei nepavyksta, jį saugu perrašyti); Kai antrinis procesas baigia perrašyti laikinąjį failą, pirminis procesas gauna signalą ir įrašo ankstesnius papildomus atminties pakeitimus į laikinojo failo pabaigą. Redis pervardija seną OF failą, pervardija laikinąjį failą ir pradeda rašyti į naują OF.
Galiausiai, tik tuo atveju, jei mašina sugenda arba sugenda diskas, nepamirškite reguliariai kurti atsarginės kopijos *rdb *.aof failo, sugeneruoto naudojant failų momentinę kopiją arba tik pridėti prie nuotolinio įrenginio. Aš naudoju crontab SCP kas pusvalandį. Aš nenaudojau redis "master-slave funkcija, nes pusvalandžio atsarginė kopija turėtų būti gerai, ir aš jaučiu, kad tai šiek tiek švaistymas mašina, jei turite master-slave. Tai galiausiai priklauso nuo taikymo.
|