Ano ang buong pangalan ng Redis RDB? Redis RDB memory data persistence operation mode

Ang buong pangalan ng RDB ayRedis database.

  • Tulad ng iminumungkahi ng pangalan, ang RDB ay isang database ng Redis na ginagamit upang mag-imbak ng data.
  • Samakatuwid, sa pamamagitan ng pagtitiyaga ng RDB, ang data na nakaimbak sa memorya ng Redis ay nakasulat sa RDB file at nai-save sa disk upang makamit ang pagtitiyaga.
  • Ang tampok ng Redis ay na maaari itong magpatuloy ng data, iyon ay, magsulat ng data sa memorya sa disk upang matiyak na walang data na mawawala, at maaari ring mag-load ng data mula sa disk patungo sa memorya.

Ano ang buong pangalan ng Redis RDB? Redis RDB memory data persistence operation mode

Ang mga operasyon ng Redis sa simula ay lahat ay batay sa memorya, kaya ang pagganap ay napakataas, ngunit kapag ang programa ay sarado, ang data ay nawala.

Samakatuwid, kailangan nating magsulat ng in-memory na data sa disk sa mga tinukoy na agwat, na Snapshot sa jargon.

Kapag nire-restore, ang snapshot file ay direktang isinulat sa memorya.

Ito rin ang isa sa mga pangunahing pagkakaiba sa pagitan ng Redis at Memcached, dahil ang Memcached ay walang kakayahan sa pagtitiyaga.

Para sa pagpapatuloy ng data ng memorya ng Redis, binibigyan tayo ng Redis ng mga sumusunod na pamamaraan:

  • Paraan ng snapshot (RDB, Redis DataBase): isulat ang data ng memorya sa disk sa binary form sa isang tiyak na sandali;
  • Append Only File (AOF, Append Only File), itala ang lahat ng operation command, at idugtong sa file sa text form;
  • Hybrid persistence, isang bagong paraan pagkatapos ng Redis 4.0, hybrid persistence ay pinagsasama ang mga pakinabang ng RDB at AOF.Kapag nagsusulat, isulat muna ang kasalukuyang data sa simula ng file sa anyo ng RDB, at pagkatapos ay i-save ang kasunod na mga utos ng operasyon sa file sa anyo ng AOF, na hindi lamang matiyak ang bilis ng pag-restart ng Redis, ngunit bawasan din. ang panganib ng pagkawala ng data.

Dahil ang bawat scheme ng pagtitiyaga ay may mga partikular na sitwasyon sa paggamit.

Redis RDB memory data persistence operation mode

  • Ang RDB (Redis DataBase) ay ang proseso ng pagsulat ng memory snapshot (Snapshot) sa isang tiyak na sandali sa disk sa binary form.
  • Ang mga snapshot ng memorya ay ang sinabi namin sa itaas.Ito ay tumutukoy sa talaan ng estado ng data sa memorya sa isang tiyak na sandali.
  • Ito ay katulad ng pagkuha ng larawan. Kapag kumuha ka ng larawan ng isang kaibigan, ang isang larawan ay maaaring agad na mag-record ng lahat ng mga larawan ng kaibigan.
  • Mayroong dalawang paraan upang ma-trigger ang RDB: ang isa ay manu-manong pag-trigger, at ang isa ay awtomatikong pag-trigger.

Manu-manong i-trigger ang RDB

Mayroong dalawang mga operasyon upang manu-manong mag-trigger ng pagtitiyaga:saveAtbgsave.

Ang pangunahing pagkakaiba sa pagitan nila ay kung harangan o hindi ang pagpapatupad ng pangunahing thread ng Redis.

1. i-save ang utos

Ang pag-execute ng save command sa client side ay magti-trigger ng persistence ng Redis, ngunit gagawin din nito ang Redis sa isang blocking state. Hindi ito tutugon sa mga command na ipinadala ng ibang mga client hanggang sa ang RDB ay nagpapatuloy, kaya dapat itong gamitin nang may pag-iingat sa kapaligiran ng produksyon.

127.0.0.1:6379> save
OK
127.0.0.1:6379>

Ang proseso ng pagpapatupad ng utos ay ipinapakita sa figure 

2. bgsave na utos

  • Ang bgsave (background save) ay isang background save.
  • Ang pinakamalaking pagkakaiba sa pagitan nito at ng save na utos ay ang bgsave ay mag-fork ng proseso ng bata upang maisagawa ang pagtitiyaga.
  • Ang buong proseso ay kapag ang proseso ng bata ay tinidor.May konting bara lang.
  • Matapos magawa ang proseso ng bata, ang pangunahing proseso ng Redis ay maaaring tumugon sa mga kahilingan mula sa iba pang mga kliyente.

na may pagharang sa buong prosesosavekumpara sa utosbgsaveAng utos ay malinaw na mas angkop para sa amin na gamitin.

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

Awtomatikong i-trigger ang RDB

Pagkatapos pag-usapan ang tungkol sa manu-manong pag-trigger, tingnan natin ang awtomatikong pag-trigger.Maaari naming i-configure ang mga kundisyon para sa awtomatikong pag-trigger sa configuration file.

1. makatipid ng mn

  • Ang ibig sabihin ng save mn na sa loob ng m segundo, kung magbabago ang n key, awtomatikong ma-trigger ang pagtitiyaga.Ang mga parameter m at n ay matatagpuan sa Redis configuration file.
  • Halimbawa, ang pag-save ng 60 1 ay nangangahulugan na sa loob ng 60 segundo, hangga't nagbabago ang isang susi, ma-trigger ang pagtitiyaga ng RDB.
  • Ang kakanyahan ng awtomatikong pag-trigger ng pagtitiyaga ay kung ang mga nakatakdang kundisyon ng pag-trigger ay natutugunan, awtomatikong isasagawa ng Redis ang bgsave command nang isang beses.

Tandaan: Kapag nakatakda ang maraming save mn na command, ang anumang kundisyon ay magti-trigger ng persistence.

Halimbawa, itinakda namin ang sumusunod na dalawang save mn command:

save 60 10
save 600 20
  • Kapag nagbago ang halaga ng Redis key nang 60 beses sa loob ng 10s, ma-trigger ang pagtitiyaga;
  • Kung magbabago ang Redis key sa loob ng 60s, at kung mababago ang value ng mas mababa sa 10 beses, tutukuyin ng Redis kung ang Redis key ay nabago nang hindi bababa sa 600 beses sa loob ng 20s, at kung gayon, mag-trigger ng persistence.

2. Flushall

  • Ang flushall command ay ginagamit upang i-flush ang Redis database.
  • Dapat itong gamitin nang may pag-iingat sa isang kapaligiran ng produksyon.
  • Kapag isinagawa ni Redis ang flushall command, nagti-trigger ito ng awtomatikong pagtitiyaga at nililimas ang RDB file.

3. Master-slave synchronization trigger

Sa Redis master-slave replication, kapag ang slave node ay nagsagawa ng buong replication operation, ang master node ay isasagawa ang bgsave command upang ipadala ang RDB file sa slave node. Ang prosesong ito ay awtomatikong nagti-trigger ng Redis persistence.

Maaaring i-query ng Redis ang kasalukuyang mga parameter ng pagsasaayos sa pamamagitan ng mga utos.

Ang format ng query command ay:config get xxx

Halimbawa, kung gusto mong makuha ang setting ng pangalan ng storage para sa isang RDB file, maaari mong gamitin config get dbfilename .

Ang epekto ng pagpapatupad ay ang mga sumusunod:

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

Dahil ang Redis server ay haharang kapag naglo-load ng RDB file hanggang sa makumpleto ang paglo-load, maaari itong magdulot ng mahabang panahon at hindi ma-access ang website.

Kung gusto mong manual na tanggalin ang RDB cache file na dump.rdb ng Redis, maaari mong gamitin ang sumusunod na command upang mahanap ang storage path ng dump.rdb file▼

find / -name dump.rdb
  • Pagkatapos, manual na tanggalin ang dump.rdb cache file sa pamamagitan ng SSH.

Itinatakda ng Redis ang pagsasaayos ng RDB

Tungkol sa pagtatakda ng configuration ng RDB, maaari mong gamitin ang sumusunod na dalawang paraan:

  1. Manu-manong baguhin ang Redis configuration file
  2. Gamitin ang mga setting ng command line, ang config set dir na "/usr/data" ay ang storage command para baguhin ang RDB file

Tandaan: Ang configuration sa redis.conf ay maaaring makuha sa pamamagitan ng config get xxx at mabago sa pamamagitan ng config set xxx value, at ang paraan ng manu-manong pagbabago sa Redis configuration file ay epektibo sa buong mundo, iyon ay, ang mga parameter na itinakda sa pamamagitan ng pag-restart ng Redis server ay hindi mawawala, ngunit binago gamit ang command , mawawala ito pagkatapos mag-restart ang Redis.

Gayunpaman, kung gusto mong manu-manong baguhin ang Redis configuration file upang magkabisa kaagad, kailangan mong i-restart ang Redis server, at ang command method ay hindi nangangailangan ng pag-restart ng Redis server.

Pagbawi ng RDB file

Kapag nagsimula ang Redis server, kung ang RDB file dump.rdb ay umiiral sa Redis root directory, ang Redis ay awtomatikong maglo-load ng RDB file upang maibalik ang patuloy na data.

Kung walang dump.rdb file sa root directory, mangyaring ilipat ang dump.rdb file sa root directory ng Redis.

Siyempre, mayroong impormasyon sa pag-log kapag nagsimula ang Redis, na magpapakita kung ang RDB file ay na-load.

Ang Redis server ay humaharang habang nilo-load ang RDB file hanggang sa makumpleto ang paglo-load.

Ngayon alam na natin na ang RDB persistence ay nahahati sa dalawang paraan: manual triggering at automatic triggering:

  1. Ang kalamangan nito ay maliit ang storage file at mas mabilis ang pagbawi ng data kapag sinimulan ang Redis.
  2. Ang downside ay mayroong panganib ng pagkawala ng data.

Ang pagbawi ng mga RDB file ay napaka-simple. Ilagay lamang ang mga RDB file sa root directory ng Redis, at ang Redis ay awtomatikong maglo-load at mag-restore ng data kapag nagsimula ito.

Mga kalamangan at kahinaan ng RDB

1) Mga kalamangan ng RDB

Ang nilalaman ng RDB ay binary data, sumasakop ng mas kaunting memorya, mas compact, at mas angkop bilang backup file;

Ang RDB ay lubhang kapaki-pakinabang para sa pagbawi ng sakuna, ito ay isang naka-compress na file na maaaring ilipat sa isang malayong server nang mas mabilis para sa pagbawi ng serbisyo ng Redis;

Ang RDB ay maaaring lubos na mapahusay ang bilis ng Redis, dahil ang pangunahing proseso ng Redis ay hahadlang sa proseso ng bata upang mapanatili ang data sa disk.

Ang pangunahing proseso ng Redis ay hindi nagsasagawa ng mga operasyon tulad ng disk I/O;

Kung ikukumpara sa mga file na format ng AOF, mas mabilis na mag-restart ang mga RDB file.

2) Mga disadvantages ng RDB

Dahil ang RDB ay makakapag-save lamang ng data sa isang tiyak na agwat ng oras, kung ang serbisyo ng Redis ay hindi sinasadyang natapos sa gitna, ang data ng Redis ay mawawala sa loob ng isang yugto ng panahon;

Isang proseso kung saan ang RDB ay nangangailangan ng madalas na mga tinidor upang mapanatili ito sa disk gamit ang subentry.

Kung malaki ang dataset, maaaring magtagal ang fork, at kung malaki ang dataset, mahina ang performance ng CPU, na maaaring magsanhi sa Redis na hindi makapaglingkod sa mga kliyente sa loob ng ilang millisecond o kahit isang segundo.

Siyempre, maaari rin naming i-disable ang pagtitiyaga upang mapabuti ang kahusayan sa pagpapatupad ng Redis.

Kung hindi ka sensitibo sa pagkawala ng data, magagawa mo ito kapag kumonekta ang kliyente config set save "" Utos na huwag paganahin ang pagtitiyaga para sa Redis.

redis.conf, kung nasasaveIkomento ang lahat ng mga configuration sa simula, at ang pagtitiyaga ay madi-disable din, ngunit ito ay karaniwang hindi ginagawa.

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) shared "Ano ang buong pangalan ng Redis RDB? Redis RDB In-Memory Data Persistence Operation Mode, na nakakatulong para sa iyo.

Maligayang pagdating upang ibahagi ang link ng artikulong ito:https://www.chenweiliang.com/cwl-26677.html

Maligayang pagdating sa Telegram channel ng blog ni Chen Weiliang para makuha ang pinakabagong mga update!

🔔 Maging una upang makuha ang mahalagang "ChatGPT Content Marketing AI Tool Usage Guide" sa direktoryo ng nangungunang channel! 🌟
📚 Ang gabay na ito ay naglalaman ng malaking halaga, 🌟Ito ay isang bihirang pagkakataon, huwag palampasin ito! ⏰⌛💨
Share and like kung gusto mo!
Ang iyong pagbabahagi at pag-like ay ang aming patuloy na pagganyak!

 

发表 评论

Ang iyong email address ay hindi mai-publish. 必填 项 已 用 * Tatak

mag-scroll sa itaas