Wat is de volledige naam van Redis RDB? Redis RDB-geheugengegevenspersistentie-bewerkingsmodus

De volledige naam van RDB isRedis database.

  • Zoals de naam al doet vermoeden, is RDB een Redis-database die wordt gebruikt om gegevens op te slaan.
  • Daarom worden, via RDB-persistentie, de gegevens die zijn opgeslagen in het Redis-geheugen, naar het RDB-bestand geschreven en op de schijf opgeslagen om persistentie te bereiken.
  • Het kenmerk van Redis is dat het gegevens kan bewaren, dat wil zeggen gegevens in het geheugen naar schijf kan schrijven om ervoor te zorgen dat er geen gegevens verloren gaan, en ook gegevens van schijf in het geheugen kan laden.

Wat is de volledige naam van Redis RDB? Redis RDB-geheugengegevenspersistentie-bewerkingsmodus

De bewerkingen van Redis zijn in het begin allemaal gebaseerd op geheugen, dus de prestaties zijn erg hoog, maar zodra het programma wordt afgesloten, gaan de gegevens verloren.

Daarom moeten we met gespecificeerde intervallen in-memory data naar schijf schrijven, wat in jargon Snapshot is.

Bij het terugzetten wordt het snapshotbestand direct naar het geheugen geschreven.

Dit is ook een van de belangrijkste verschillen tussen Redis en Memcached, omdat Memcached geen persistentie heeft.

Voor de persistentie van Redis-geheugengegevens biedt Redis ons de volgende methoden:

  • Snapshot-methode (RDB, Redis DataBase): schrijf geheugengegevens op een bepaald moment in binaire vorm naar schijf;
  • Alleen bestand toevoegen (AOF, Alleen bestand toevoegen), alle bedieningsopdrachten opnemen en in tekstvorm aan het bestand toevoegen;
  • Hybride persistentie, een nieuwe methode na Redis 4.0, hybride persistentie combineert de voordelen van RDB en AOF.Schrijf bij het schrijven eerst de huidige gegevens naar het begin van het bestand in de vorm van RDB en sla vervolgens de volgende bewerkingsopdrachten op in het bestand in de vorm van AOF, wat niet alleen de snelheid van Redis-herstart kan garanderen, maar ook kan verminderen het risico van gegevensverlies.

Omdat elk persistentieschema specifieke gebruiksscenario's heeft.

Redis RDB-geheugengegevenspersistentie-bewerkingsmodus

  • RDB (Redis DataBase) is het proces waarbij een geheugensnapshot (Snapshot) op een bepaald moment in binaire vorm naar schijf wordt geschreven.
  • Geheugensnapshots zijn wat we hierboven zeiden.Het verwijst naar het staatsrecord van gegevens in het geheugen op een bepaald moment.
  • Dit is vergelijkbaar met het maken van een foto: wanneer u een foto van een vriend maakt, kan een foto onmiddellijk alle afbeeldingen van de vriend opnemen.
  • Er zijn twee manieren om RDB te activeren: de ene is handmatige activering en de andere is automatische activering.

Activeer handmatig de RDB

Er zijn twee bewerkingen om persistentie handmatig te activeren:savebgsave.

Het belangrijkste verschil tussen beide is het al dan niet blokkeren van de uitvoering van de Redis-hoofdthread.

1. opdracht opslaan

Het uitvoeren van het save-commando aan de clientzijde zal de persistentie van Redis activeren, maar het zal Redis ook in een blokkerende staat brengen.Het zal niet reageren op commando's die door andere clients zijn verzonden totdat de RDB is volgehouden, dus het moet met voorzichtigheid worden gebruikt in de productieomgeving.

127.0.0.1:6379> save
OK
127.0.0.1:6379>

Het proces van het uitvoeren van de opdracht wordt getoond in de afbeelding: 

2. bgsave-opdracht

  • bgsave (background save) is een achtergrondopslag.
  • Het grootste verschil tussen het en de opdracht opslaan is dat bgsave een onderliggend proces zal splitsen om persistentie uit te voeren.
  • Het hele proces is alleen wanneer het kindproces een vork is.Er is slechts een korte verstopping.
  • Nadat het onderliggende proces is gemaakt, kan het hoofdproces van Redis reageren op verzoeken van andere clients.

met het blokkeren van het hele processavevergeleken met het commandobgsaveCommando is duidelijk meer geschikt voor ons om te gebruiken.

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

RDB automatisch activeren

Laten we, nadat we het hebben gehad over handmatige activering, eens kijken naar automatische activering.We kunnen de voorwaarden voor automatische activering configureren in het configuratiebestand.

1. bespaar mn

  • save mn betekent dat binnen m seconden, als n toetsen veranderen, de persistentie automatisch wordt geactiveerd.Parameters m en n zijn te vinden in het Redis-configuratiebestand.
  • Als u bijvoorbeeld 60 1 opslaat, betekent dit dat binnen 60 seconden, zolang één toets verandert, RDB-persistentie wordt geactiveerd.
  • De essentie van het automatisch activeren van persistentie is dat als aan de ingestelde triggervoorwaarden wordt voldaan, Redis het bgsave-commando automatisch één keer uitvoert.

Opmerking: wanneer meerdere save mn-opdrachten zijn ingesteld, zal elke voorwaarde persistentie veroorzaken.

We stellen bijvoorbeeld de volgende twee save mn-opdrachten in:

save 60 10
save 600 20
  • Wanneer de waarde van de Redis-sleutel 60 keer verandert binnen 10 seconden, wordt persistentie geactiveerd;
  • Als de Redis-sleutel binnen 60 seconden verandert, en als de waarde minder dan 10 keer verandert, zal Redis bepalen of de Redis-sleutel binnen 600 seconden minstens 20 keer is gewijzigd, en zo ja, wordt persistentie geactiveerd.

2. Flushall

  • De opdracht flushall wordt gebruikt om de Redis-database te wissen.
  • Het moet met voorzichtigheid worden gebruikt in een productieomgeving.
  • Wanneer Redis de opdracht flushall uitvoert, wordt automatisch persistentie geactiveerd en wordt het RDB-bestand gewist.

3. Master-slave-synchronisatietrigger

In Redis master-slave-replicatie, wanneer het slave-knooppunt een volledige replicatiebewerking uitvoert, voert het master-knooppunt de opdracht bgsave uit om het RDB-bestand naar het slave-knooppunt te verzenden.Dit proces activeert automatisch Redis-persistentie.

Redis kan de huidige configuratieparameters opvragen via opdrachten.

Het formaat van het query-commando is:config get xxx

Als u bijvoorbeeld de opslagnaaminstelling van een RDB-bestand wilt, kunt u gebruiken config get dbfilename .

Het uitvoeringseffect is als volgt:

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

Aangezien de Redis-server bij het laden van het RDB-bestand blokkeert totdat het laden is voltooid, kan dit lang duren en is de website niet toegankelijk.

Als u het RDB-cachebestand dump.rdb van Redis handmatig wilt verwijderen, kunt u de volgende opdracht gebruiken om het opslagpad van het dump.rdb-bestand te vinden:

find / -name dump.rdb
  • Verwijder vervolgens handmatig het dump.rdb-cachebestand via SSH.

Redis stelt de configuratie van RDB in

Wat betreft het instellen van de configuratie van RDB, kunt u de volgende twee manieren gebruiken:

  1. Wijzig handmatig het Redis-configuratiebestand
  2. Gebruik de opdrachtregelinstellingen, configuratieset dir "/usr/data" is de opslagopdracht om het RDB-bestand te wijzigen

Opmerking: de configuratie in redis.conf kan worden verkregen via config get xxx en gewijzigd via config set xxx-waarde, en de methode voor het handmatig wijzigen van het Redis-configuratiebestand is globaal effectief, dat wil zeggen dat de parameters die zijn ingesteld door het opnieuw opstarten van de Redis-server niet verloren gaan, maar gewijzigd worden met het commando , zal het verloren gaan nadat Redis opnieuw is opgestart.

Als u het Redis-configuratiebestand echter handmatig wilt wijzigen om onmiddellijk van kracht te worden, moet u de Redis-server opnieuw opstarten en de opdrachtmethode vereist niet dat de Redis-server opnieuw wordt opgestart.

RDB-bestandsherstel

Als de Redis-server start en het RDB-bestand dump.rdb in de Redis-hoofdmap staat, laadt Redis automatisch het RDB-bestand om persistente gegevens te herstellen.

Als er geen dump.rdb-bestand in de hoofdmap staat, verplaats dan eerst het dump.rdb-bestand naar de hoofdmap van Redis.

Natuurlijk is er loginformatie wanneer Redis start, die laat zien of het RDB-bestand is geladen.

De Redis-server blokkeert tijdens het laden van het RDB-bestand totdat het laden is voltooid.

Nu weten we dat RDB-persistentie op twee manieren is verdeeld: handmatige activering en automatische activering:

  1. Het voordeel is dat het opslagbestand klein is en dat gegevensherstel sneller is wanneer Redis wordt gestart.
  2. Het nadeel is dat er een risico is op gegevensverlies.

Het herstellen van RDB-bestanden is ook heel eenvoudig: plaats de RDB-bestanden gewoon in de hoofdmap van Redis en Redis zal automatisch gegevens laden en herstellen wanneer het start.

RDB voor- en nadelen

1) RDB-voordelen:

De inhoud van RDB bestaat uit binaire gegevens, die minder geheugen in beslag nemen, compacter zijn en meer geschikt zijn als back-upbestand;

RDB is erg handig voor noodherstel, het is een gecomprimeerd bestand dat sneller kan worden overgebracht naar een externe server voor Redis-serviceherstel;

RDB kan de snelheid van Redis aanzienlijk verbeteren, omdat het hoofdproces van Redis een onderliggend proces zal splitsen om gegevens op schijf te bewaren.

Het hoofdproces van Redis voert geen bewerkingen uit zoals schijf-I/O;

Vergeleken met bestanden in AOF-formaat, herstarten RDB-bestanden sneller.

2) Nadelen van RDB

Omdat RDB gegevens alleen met een bepaald tijdsinterval kan opslaan, gaan de Redis-gegevens voor een bepaalde tijd verloren als de Redis-service per ongeluk halverwege wordt beëindigd;

Een proces waarbij RDB frequente forks vereist om het op schijf op te slaan met behulp van subentry.

Als de dataset groot is, kan de fork tijdrovend zijn, en als de dataset groot is, zijn de CPU-prestaties slecht, waardoor Redis de clients een paar milliseconden of zelfs een seconde niet kan bedienen.

Natuurlijk kunnen we persistentie ook uitschakelen om de uitvoeringsefficiëntie van Redis te verbeteren.

Als u niet gevoelig bent voor gegevensverlies, kunt u dit doen wanneer de client verbinding maakt config set save "" Opdracht om persistentie voor Redis uit te schakelen.

redis.conf, als insaveGeef aan het begin commentaar op alle configuraties en persistentie wordt ook uitgeschakeld, maar dit wordt over het algemeen niet gedaan.

Hoop Chen Weiliang Blog ( https://www.chenweiliang.com/ ) gedeeld "Wat is de volledige naam van Redis RDB? Redis RDB In-Memory Data Persistence Operation Mode", zal u helpen.

Welkom om de link van dit artikel te delen:https://www.chenweiliang.com/cwl-26677.html

Welkom op het Telegram-kanaal van Chen Weiliang's blog voor de laatste updates!

🔔 Wees de eerste die de waardevolle "ChatGPT Content Marketing AI Tool Usage Guide" in de bovenste kanaaldirectory ontvangt! 🌟
📚 Deze gids bevat enorme waarde, 🌟Dit is een zeldzame kans, mis hem niet! ⏰⌛💨
Deel en like als je wilt!
Uw delen en likes zijn onze voortdurende motivatie!

 

发表 评论

Uw e-mailadres wordt niet gepubliceerd. 必填 项 已 用 * 标注

scroll naar boven