Redis 中有兩種持久化方式,分別為 RDB
和 AOF
。
RDB
RDB 全稱 Redis Database Backup file
,也叫做 Redis 數(shù)據(jù)快照。簡(jiǎn)單來(lái)說(shuō)就是把 Redis 中的數(shù)據(jù)記錄到磁盤中。當(dāng) Redis 實(shí)例故障重啟后,從磁盤讀取快照文件,恢復(fù)數(shù)據(jù)。
RDB有兩種備份方式,一種是主動(dòng)備份,一種是Redis 內(nèi)部執(zhí)行備份
主動(dòng)備份
主動(dòng)備份就需要我們手動(dòng)執(zhí)行命令。
Redis中有兩個(gè)命令,一個(gè)是 save
,一個(gè)是 bgsave
,這兩個(gè)命令又有些區(qū)別。save
命令會(huì)使用主進(jìn)程來(lái)執(zhí)行 RDB ,阻塞其他所有命令;bgsave
開(kāi)啟子進(jìn)程執(zhí)行 RDB,避免主進(jìn)程命令受到影響。
注意:這里是進(jìn)程而不是線程
Redis 內(nèi)部執(zhí)行備份
Redis內(nèi)部執(zhí)行備份,只需要我們修改配置即可
RDB執(zhí)行原理
fork 采用技術(shù)需要知道,并且能夠答出
面試題:RDB 做快照的時(shí)候數(shù)據(jù)能修改嗎?save
命令是同步的會(huì)阻塞客戶端命令,bgsave
命令是可以修改的
面試題:Redis是怎么解決在bgsave做快照的時(shí)候允許數(shù)據(jù)修改?
結(jié)合上圖,如果說(shuō)主線程執(zhí)行讀數(shù)據(jù),那么主線程和子線程互不影響。如果說(shuō)主線程執(zhí)行寫操作,那么被修改的數(shù)據(jù)會(huì)復(fù)制一個(gè)副本,然后bgsave子進(jìn)程會(huì)讀這個(gè)副本,然后寫入到RDB文件。這個(gè)過(guò)程,主進(jìn)程是可以繼續(xù)修改原來(lái)文件的
AOF
AOF 全稱 Append Only File
。Redis 處理的每一個(gè)寫命令會(huì)記錄在 AOF 文件中,可以看成命令記錄文件。
AOF 默認(rèn)是關(guān)閉的,我們可以通過(guò)配置打開(kāi)。
AOF 重寫功能:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-782621.html
參考鏈接
B站黑馬Redis視頻文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-782621.html
到了這里,關(guān)于【Redis】Redis持久化方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!