Vad är det fullständiga namnet på Redis RDB? Redis RDB-minnesdata beständig driftläge

RDBs fullständiga namn ärRedis database.

  • Som namnet antyder är RDB en Redis-databas som används för att lagra data.
  • Genom RDB-beständighet skrivs därför data som lagras i Redis-minnet till RDB-filen och sparas på disken för att uppnå beständighet.
  • Funktionen hos Redis är att den kan bevara data, det vill säga skriva data i minnet till disken för att säkerställa att ingen data går förlorad, och kan även ladda data från disken till minnet.

Vad är det fullständiga namnet på Redis RDB? Redis RDB-minnesdata beständig driftläge

Redis funktioner i början är alla baserade på minne, så prestandan är mycket hög, men när programmet väl är stängt går data förlorad.

Därför måste vi skriva in-memory data till disken med specificerade intervall, vilket är Snapshot på jargong.

Vid återställning skrivs stillbildsfilen direkt till minnet.

Detta är också en av de största skillnaderna mellan Redis och Memcached, eftersom Memcached inte har någon uthållighetsförmåga.

För att bevara Redis minnesdata ger Redis oss följande metoder:

  • Snapshot-metod (RDB, Redis DataBase): skriv minnesdata till disk i binär form vid ett visst tillfälle;
  • Lägg till endast fil (AOF, Lägg endast till fil), registrera alla operationskommandon och lägg till filen i textform;
  • Hybrid persistens, en ny metod efter Redis 4.0, hybrid persistens kombinerar fördelarna med RDB och AOF.När du skriver, skriv först den aktuella informationen till början av filen i form av RDB och spara sedan de efterföljande operationskommandona till filen i form av AOF, vilket inte bara kan säkerställa hastigheten för omstart av Redis, utan också minska risken för dataförlust.

Eftersom varje persistensschema har specifika användningsscenarier.

Redis RDB-minnesdatabeständighetsdriftsläge

  • RDB (Redis DataBase) är processen att skriva en minnesbild (Snapshot) vid ett visst tillfälle till disk i binär form.
  • Minnesbilder är vad vi sa ovan.Det hänvisar till tillståndsregistreringen av data i minnet vid en viss tidpunkt.
  • Det här liknar att ta ett foto. När du tar ett foto av en vän kan ett foto omedelbart spela in alla bilder på vännen.
  • Det finns två sätt att trigga RDB: ett är manuell triggning och det andra är automatisk triggning.

Trigga RDB manuellt

Det finns två operationer för att manuellt utlösa persistens:savebgsave.

Den största skillnaden mellan dem är huruvida körningen av Redis huvudtråd ska blockeras eller inte.

1. spara kommando

Att köra sparakommandot på klientsidan kommer att utlösa Redis beständighet, men det kommer också att göra Redis i ett blockerande tillstånd. Det kommer inte att svara på kommandon som skickas av andra klienter förrän RDB behålls, så det måste användas med försiktighet i produktionsmiljön.

127.0.0.1:6379> save
OK
127.0.0.1:6379>

Processen för att utföra kommandot visas i figuren 

2. kommandot bgsave

  • bgsave (background save) är en bakgrundsspara.
  • Den största skillnaden mellan det och spara kommandot är att bgsave kommer att splittra en underordnad process för att utföra persistens.
  • Hela processen sker bara när barnprocessen är gaffel.Det finns bara en kort blockering.
  • Efter att den underordnade processen har skapats kan Redis huvudprocess svara på förfrågningar från andra klienter.

med att blockera hela processensavejämfört med kommandotbgsaveCommand är uppenbarligen mer lämplig för oss att använda.

127.0.0.1:6379> bgsave
Background Saving started # 提示开始后台保存 
127.0.0.1:6379>

Utlösa RDB automatiskt

Efter att ha pratat om manuell triggning, låt oss titta på automatisk triggning.Vi kan konfigurera villkoren för automatisk utlösning i konfigurationsfilen.

1. spara mn

  • save mn betyder att inom m sekunder, om n nycklar ändras, utlöses beständighet automatiskt.Parametrarna m och n finns i Redis-konfigurationsfilen.
  • Spara 60 1 betyder till exempel att inom 60 sekunder, så länge en nyckel ändras, kommer RDB-beständighet att triggas.
  • Kärnan i att automatiskt trigga persistens är att om de inställda triggervillkoren är uppfyllda kommer Redis automatiskt att utföra bgsave-kommandot en gång.

Obs: När flera spara mn-kommandon ställs in, kommer vilket villkor som helst att utlösa persistens.

Till exempel ställer vi in ​​följande två save mn-kommandon:

save 60 10
save 600 20
  • När Redis-nyckelns värde ändras 60 gånger inom 10s, utlöses beständighet;
  • Om Redis-nyckeln ändras inom 60s, och om värdet ändras mindre än 10 gånger, kommer Redis att avgöra om Redis-nyckeln har ändrats minst 600 gånger inom 20s, och i så fall utlösa persistens.

2. Flushall

  • Flushall-kommandot används för att tömma Redis-databasen.
  • Den måste användas med försiktighet i en produktionsmiljö.
  • När Redis kör kommandot flushall utlöser det automatisk beständighet och rensar RDB-filen.

3. Utlösare för master-slav-synkronisering

I Redis master-slave replikering, när slavnoden utför en fullständig replikeringsoperation, kommer masternoden att utföra bgsave-kommandot för att skicka RDB-filen till slavnoden. Denna process utlöser automatiskt Redis persistens.

Redis kan fråga de aktuella konfigurationsparametrarna genom kommandon.

Formatet för frågekommandot är:config get xxx

Till exempel, om du vill få lagringsnamnsinställningen för en RDB-fil kan du använda config get dbfilename .

Utförandeeffekten är som följer:

127.0.0.1:6379> config get dbfilename
1) "dbfilename"
2) "dump.rdb"

Eftersom Redis-servern blockerar när RDB-filen laddas tills laddningen är klar, kan det orsaka lång tid och webbplatsen kan inte nås.

Om du manuellt vill ta bort RDB-cachefilen dump.rdb från Redis, kan du använda följande kommando för att hitta lagringssökvägen till filen dump.rdb▼

find / -name dump.rdb
  • Ta sedan bort cachefilen dump.rdb manuellt via SSH.

Redis ställer in konfigurationen av RDB

När det gäller att ställa in konfigurationen av RDB, kan du använda följande två sätt:

  1. Ändra Redis-konfigurationsfilen manuellt
  2. Använd kommandoradsinställningarna, config set dir "/usr/data" är lagringskommandot för att ändra RDB-filen

Obs: Konfigurationen i redis.conf kan erhållas genom config get xxx och modifieras genom config set xxx-värdet, och metoden för att manuellt ändra Redis-konfigurationsfilen är globalt effektiv, det vill säga parametrarna som ställs in genom att starta om Redis-servern kommer inte att gå förlorad, men ändras med kommandot , kommer den att gå förlorad efter att Redis startat om.

Men om du vill ändra Redis-konfigurationsfilen manuellt så att den träder i kraft omedelbart måste du starta om Redis-servern, och kommandometoden kräver inte att Redis-servern startas om.

RDB-filåterställning

När Redis-servern startar, om RDB-filen dump.rdb finns i Redis rotkatalog, kommer Redis automatiskt att ladda RDB-filen för att återställa beständiga data.

Om det inte finns någon dump.rdb-fil i rotkatalogen, flytta dump.rdb-filen till rotkatalogen för Redis först.

Naturligtvis finns det logginformation när Redis startar, som visar om RDB-filen är laddad.

Redis-servern blockerar när RDB-filen laddas tills laddningen är klar.

Nu vet vi att RDB-beständighet är uppdelad på två sätt: manuell triggning och automatisk triggning:

  1. Dess fördel är att lagringsfilen är liten och dataåterställningen går snabbare när Redis startas.
  2. Nackdelen är att det finns risk för dataförlust.

Återställningen av RDB-filer är också mycket enkel. Placera bara RDB-filerna i rotkatalogen på Redis, så kommer Redis automatiskt att ladda och återställa data när den startar.

RDB för- och nackdelar

1) RDB fördelar

Innehållet i RDB är binär data, som upptar mindre minne, är mer kompakt och är mer lämplig som en säkerhetskopia;

RDB är mycket användbart för katastrofåterställning, det är en komprimerad fil som kan överföras till en fjärrserver snabbare för Redis-tjänståterställning;

RDB kan avsevärt förbättra hastigheten på Redis, eftersom den huvudsakliga Redis-processen kommer att klaffa en underordnad process för att bevara data till disk.

Redis huvudprocess utför inte operationer som disk I/O;

Jämfört med filer i AOF-format startar RDB-filer om snabbare.

2) Nackdelar med RDB

Eftersom RDB bara kan spara data vid ett visst tidsintervall, om Redis-tjänsten av misstag avslutas i mitten, kommer Redis-data att gå förlorade under en tidsperiod;

En process där RDB kräver frekventa gafflar för att spara den på disk med hjälp av underpost.

Om datauppsättningen är stor kan gaffeln vara tidskrävande, och om datauppsättningen är stor är CPU-prestandan dålig, vilket kan göra att Redis inte kan betjäna klienter under några millisekunder eller till och med en sekund.

Naturligtvis kan vi också inaktivera persistens för att förbättra exekveringseffektiviteten för Redis.

Om du inte är känslig för dataförlust kan du göra detta när klienten ansluter config set save "" Kommando för att inaktivera beständighet för Redis.

iredis.conf, om isaveKommentera alla konfigurationer i början, och persistens kommer också att inaktiveras, men detta görs vanligtvis inte.

Hope Chen Weiliang blogg ( https://www.chenweiliang.com/ ) delade "Vad är det fullständiga namnet på Redis RDB? Redis RDB In-Memory Data Persistence Operation Mode", kommer att hjälpa dig.

Välkommen att dela länken till denna artikel:https://www.chenweiliang.com/cwl-26677.html

Välkommen till Telegram-kanalen på Chen Weiliangs blogg för att få de senaste uppdateringarna!

🔔 Bli först med att få den värdefulla "ChatGPT Content Marketing AI Tool Usage Guide" i kanalens toppkatalog! 🌟
📚 Den här guiden innehåller ett enormt värde, 🌟Detta är ett sällsynt tillfälle, missa inte det! ⏰⌛💨
Dela och gilla om du vill!
Dina delning och likes är vår ständiga motivation!

 

发表 评论

Din e-postadress kommer inte att publiceras. 必填 项 已 用 * 标注

scrolla till toppen