這篇文章給大家介紹redis中AOF和RBD的用法是怎樣的,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
創(chuàng)新互聯(lián)公司是一家朝氣蓬勃的網(wǎng)站建設(shè)公司。公司專注于為企業(yè)提供信息化建設(shè)解決方案。從事網(wǎng)站開發(fā),網(wǎng)站制作,網(wǎng)站設(shè)計,網(wǎng)站模板,微信公眾號開發(fā),軟件開發(fā),小程序設(shè)計,十余年建站對集裝箱等多個方面,擁有多年的網(wǎng)站營銷經(jīng)驗。redis 典型應(yīng)用場景:
Rdb文件
Rdb文件就相當(dāng)于是mysql中的mysqldump將內(nèi)存中的所有數(shù)據(jù)都備份到本地磁盤上。
RDB(Redis DataBase):基于時間的快照,其默認只保留當(dāng)前最新的一次快照,特點是執(zhí) 行速度比較快,缺點是可能會丟失從上次快照到當(dāng)前時間點之間未做快照的數(shù)據(jù)。
RDB 實現(xiàn)的具體過程 Redis 從主進程先 fork 出一個子進程,使用寫時復(fù)制機制,子進 程將內(nèi)存的數(shù)據(jù)保存為一個臨時文件,比如 dump.rdb.temp,當(dāng)數(shù)據(jù)保存完成之后再 將上一次保存的 RDB 文件替換掉,然后關(guān)閉子進程,這樣可以保存每一次做 RDB 快 照的時候保存的數(shù)據(jù)都是完整的,因為直接替換 RDB 文件的時候可能會出現(xiàn)突然斷 電等問題而導(dǎo)致 RDB 文件還沒有保存完整就突然關(guān)機停止保存而導(dǎo)致數(shù)據(jù)丟失的情 況,可以手動將每次生成的 RDB 文件進程備份,這樣可以大化保存歷史數(shù)據(jù)。
RDB 模式的優(yōu)缺點:
優(yōu)點:
-RDB 快照保存了某個時間點的數(shù)據(jù),可以通過腳本執(zhí)行 bgsave(非阻塞)或者 save(阻 塞)命令自定義時間點備份,可以保留多個備份,當(dāng)出現(xiàn)問題可以恢復(fù)到不同時間點 的版本。
可以大化 IO 的性能,因為父進程在保存 RDB 文件的時候唯一要做的是 fork 出一 個子進程,然后的-操作都會有這個子進程操作,父進程無需任何的 IO 操作RDB 在大量數(shù)據(jù)比如幾個 G 的數(shù)據(jù),恢復(fù)的速度比 AOF 的快
缺點:
-不能時時的保存數(shù)據(jù),會丟失自上一次執(zhí)行 RDB 備份到當(dāng)前的內(nèi)存數(shù)據(jù)
-數(shù)據(jù)量非常大的時候,從父進程 fork 的時候需要一點時間,可能是毫秒或者秒或者 分鐘,取決于磁盤 IO 性能。
AOF文件
AOF文件類似于mysql中的二進制日志,如果redis在上一次完全備份到下一次完全備份的這段時間里面發(fā)生的宕機的情況,這段時間所生成的數(shù)據(jù)就會丟失,而AOF文件可以將這段時間的數(shù)據(jù)保存下來。
注:::當(dāng)開啟AOF功能時,redis每次重啟都會加載的是AOF文件,而不是RDB文件,當(dāng)關(guān)閉AOF功能時,就算有AOF文件,重啟redis也不會加載該文件。‘
按照操作順序依次將操作添加到指定的日志文件當(dāng)中,特點是數(shù)據(jù)安全性相對 較高,缺點是即使有些操作是重復(fù)的也會全部記錄。
AOF 和 RDB 一樣使用了寫時復(fù)制機制,AOF 默認為每秒鐘 fsync 一次,即將執(zhí)行的命 令保存到 AOF 文件當(dāng)中,這樣即使 redis 服務(wù)器發(fā)生故障的話頂多也就丟失 1 秒鐘之 內(nèi)的數(shù)據(jù),也可以設(shè)置不同的 fsync 策略,或者設(shè)置每次執(zhí)行命令的時候執(zhí)行 fsync, fsync會在后臺執(zhí)行線程,所以主線程可以繼續(xù)處理用戶的正常請求而不受到寫入 AOF 文件的 IO 影響
AOF 模式優(yōu)缺點:
AOF 的文件大小要大于 RDB 格式的文件
根據(jù)所使用的 fsync 策略(fsync 是同步內(nèi)存中 redis 所有已經(jīng)修改的文件到存儲設(shè)備),
默認是 appendfsync everysec 即每秒執(zhí)行一次 fsync
aof相關(guān)配置如下:
############################## APPEND ONLY MODE ###############################
# 是否開啟AOF,默認關(guān)閉(no)
appendonly yes
# 指定 AOF 文件名
appendfilename appendonly.aof
# Redis支持三種不同的刷寫模式:
# appendfsync always #每次收到寫命令就立即強制寫入磁盤,是最有保證的完全的持久化,但速度也是最慢的,一般不推薦使用。
appendfsync everysec #每秒鐘強制寫入磁盤一次,在性能和持久化方面做了很好的折中,是受推薦的方式。
# appendfsync no #完全依賴OS的寫入,一般為30秒左右一次,性能最好但是持久化最沒有保證,不被推薦。
#在日志重寫時,不進行命令追加操作,而只是將其放在緩沖區(qū)里,避免與命令的追加造成DISK IO上的沖突。
#設(shè)置為yes表示rewrite期間對新寫操作不fsync,暫時存在內(nèi)存中,等rewrite完成后再寫入,默認為no
no-appendfsync-on-rewrite no
#當(dāng)前AOF文件大小是上次日志重寫得到AOF文件大小的二倍時,自動啟動新的日志重寫過程。
auto-aof-rewrite-percentage 100
#當(dāng)前AOF文件啟動新的日志重寫過程的最小值,避免剛剛啟動Reids時由于文件尺寸較小導(dǎo)致頻繁的重寫。
auto-aof-rewrite-min-size 64mb
關(guān)于redis的AOF刷寫模式和日志重寫:
由于寫操作通常是有緩沖的,所以有可能AOF操作并沒有寫到硬盤中,一般可以通過fsync()來強制輸出到硬盤中。而fsync()的頻率可以通過配置文件中的flush策略來指定,可以選擇每次事件循環(huán)寫操作都強制fsync或者每秒fsync至少運行一次。
當(dāng)rewrite子進程開始后,父進程接受到的命令會添加到aof_rewrite_buf_blocks中,使得rewrite成功后,將這些命令添加到新文件中。在rewrite過程中,原來的AOF也可以選擇是不是繼續(xù)添加,由于存在性能上的問題,在rewrite過程中,如果fsync()繼續(xù)執(zhí)行,會導(dǎo)致IO性能受損影響Redis性能。所以一般情況下rewrite期間禁止fsync()到舊AOF文件。這策略可以在配置文件中修改。
關(guān)于redis中AOF和RBD的用法是怎樣的就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
分享標題:redis中AOF和RBD的用法是怎樣的-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://vcdvsql.cn/article22/ejhcc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、動態(tài)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站收錄、品牌網(wǎng)站設(shè)計、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容