<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    jinfeng_wang

    G-G-S,D-D-U!

    BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
      400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks
    http://blog.720ui.com/2016/redis_action_03_rdb_aof/


    Redis是一個(gè)支持持久化的內(nèi)存數(shù)據(jù)庫(kù),通過(guò)持久化機(jī)制把內(nèi)存中的數(shù)據(jù)同步到硬盤(pán)文件來(lái)保證數(shù)據(jù)持久化。當(dāng)Redis重啟后通過(guò)把硬盤(pán)文件重新加載到內(nèi)存,就能達(dá)到恢復(fù)數(shù)據(jù)的目的。

    RDB

    RDB是Redis默認(rèn)的持久化方式。按照一定的時(shí)間周期策略把內(nèi)存的數(shù)據(jù)以快照的形式保存到硬盤(pán)的二進(jìn)制文件。即Snapshot快照存儲(chǔ),對(duì)應(yīng)產(chǎn)生的數(shù)據(jù)文件為dump.rdb,通過(guò)配置文件中的save參數(shù)來(lái)定義快照的周期。

    1. # 快照的文件名
    2. dbfilename dump.rdb
    3. # 存放快照的目錄
    4. dir /var/lib/redis
    5. # 在進(jìn)行鏡像備份時(shí),是否進(jìn)行壓縮。
    6. # yes:壓縮,但是需要一些cpu的消耗。
    7. # no:不壓縮,需要更多的磁盤(pán)空間。
    8. rdbcompression yes
    9. #900秒后且至少1個(gè)key發(fā)生變化時(shí)創(chuàng)建快照
    10. save 900 1
    11. #300秒后且至少10個(gè)key發(fā)生變化時(shí)創(chuàng)建快照
    12. save 300 10
    13. #60秒后且至少10000個(gè)key發(fā)生變化時(shí)創(chuàng)建快照
    14. save 60 10000

    一旦數(shù)據(jù)庫(kù)出現(xiàn)問(wèn)題,那么我們的RDB文件中保存的數(shù)據(jù)并不是全新的,從上次RDB文件生成到Redis停機(jī)這段時(shí)間的數(shù)據(jù)全部丟掉了。例如,每隔5分鐘或者更長(zhǎng)的時(shí)間來(lái)創(chuàng)建一次快照,Redis停止工作時(shí)(例如意外斷電)就可能丟失最近幾分鐘的數(shù)據(jù)。

    AOF

    Redis會(huì)將每一個(gè)收到的寫(xiě)命令都通過(guò)Write函數(shù)追加到文件最后,類(lèi)似于MySQL的binlog。當(dāng)Redis重啟是會(huì)通過(guò)重新執(zhí)行文件中保存的寫(xiě)命令來(lái)在內(nèi)存中重建整個(gè)數(shù)據(jù)庫(kù)的內(nèi)容。

    1. # 是否開(kāi)啟AOF,默認(rèn)關(guān)閉(no)
    2. appendonly yes

    由于Linux會(huì)把對(duì)文件的寫(xiě)入操作通過(guò)buffer緩沖,因此Linux可能不是立即寫(xiě)入到文件,有對(duì)視數(shù)據(jù)的風(fēng)險(xiǎn)。Redis有三種不同的fsync策略供選擇:no fsync at all、 fsync every second、 fsync at every query。默認(rèn)為fsync every second此時(shí)的寫(xiě)性能仍然很好,且最壞的情況下可能丟失一秒鐘的寫(xiě)操作。

    1. # Redis支持三種不同的刷寫(xiě)模式:
    2. #每次收到寫(xiě)命令就立即強(qiáng)制寫(xiě)入磁盤(pán),是最有保證的完全的持久化,但速度也是最慢的,一般不推薦使用。
    3. # appendfsync always
    4. #每秒鐘強(qiáng)制寫(xiě)入磁盤(pán)一次,在性能和持久化方面做了很好的折中,是受推薦的方式。
    5. appendfsync everysec
    6. #完全依賴OS的寫(xiě)入,一般為30秒左右一次,性能最好但是持久化最沒(méi)有保證,不被推薦。
    7. # appendfsync no

    AOF帶來(lái)了另一個(gè)問(wèn)題,持久化文件會(huì)變得越來(lái)越大。比如,我們調(diào)用INCR test命令100次,文件中就必須保存全部的100條命令,但其實(shí)99條都是多余的。因?yàn)橐謴?fù)數(shù)據(jù)庫(kù)的狀態(tài)其實(shí)文件中保存一條SET test 100就夠了。為了合并重寫(xiě)AOF的持久化文件,Redis提供了bgrewriteaof命令。收到此命令后,Redis將使用與快照類(lèi)似的方式將內(nèi)存中的數(shù)據(jù)以命令的方式保存到臨時(shí)文件中,最后替換原來(lái)的文件,以此來(lái)實(shí)現(xiàn)控制AOF文件的合并重寫(xiě)。由于是模擬快照的過(guò)程,因此在重寫(xiě)AOF文件時(shí)并沒(méi)有讀取舊的AOF文件,而是將整個(gè)內(nèi)存中的數(shù)據(jù)庫(kù)內(nèi)容用命令的方式重寫(xiě)了一個(gè)新的AOF文件。

    1. # AOF文件名
    2. appendfilename appendonly.aof
    3. #當(dāng)進(jìn)程中BGSAVE或BGREWRITEAOF命令正在執(zhí)行時(shí)不阻止主進(jìn)程中的fsync()調(diào)用(默認(rèn)為no,當(dāng)存在延遲問(wèn)題時(shí)需調(diào)整為yes)
    4. no-appendfsync-on-rewrite no
    5. #當(dāng)AOF增長(zhǎng)率為100%且達(dá)到了64mb時(shí)開(kāi)始自動(dòng)重寫(xiě)AOF
    6. auto-aof-rewrite-percentage 100
    7. auto-aof-rewrite-min-size 64mb
    posted on 2016-12-14 16:34 jinfeng_wang 閱讀(107) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 2016-REDIS
    主站蜘蛛池模板: 无人视频在线观看免费播放影院 | 亚洲欧洲综合在线| 亚洲小说区图片区另类春色| 亚洲国产成人a精品不卡在线| 国产一级理论免费版| 国产男女性潮高清免费网站| 性做久久久久免费观看| 国产男女性潮高清免费网站| 国产伦一区二区三区免费| 国产aa免费视频| 亚洲精品线路一在线观看 | 在线观看www日本免费网站| 91精品国产免费入口| 麻豆高清免费国产一区| 天天影院成人免费观看| 无人在线观看完整免费版视频| 成人爽A毛片免费看| 日本a级片免费看| 亚洲精品456播放| 亚洲精品午夜无码专区| 91亚洲国产成人久久精品网站| 色拍自拍亚洲综合图区| 亚洲an日韩专区在线| 亚洲午夜无码毛片av久久京东热| 亚洲精品乱码久久久久蜜桃| 精品亚洲成A人在线观看青青| 一级美国片免费看| 国内精品久久久久影院免费| 免费无码中文字幕A级毛片| 国产va免费精品观看精品 | 日韩免费观看一区| 18国产精品白浆在线观看免费 | a级男女仿爱免费视频| 51精品视频免费国产专区| 在线a毛片免费视频观看| 亚洲精品高清在线| 亚洲天堂中文字幕| 亚洲精品久久久久无码AV片软件| 亚洲黄片手机免费观看| 亚洲一级免费视频| 亚洲av成人一区二区三区在线观看|