Redis學習筆記:(二)數據持久化

1. RDB 快照

        在指定的時間間隔內對數據進行快照存儲,存儲在 dump.rdb 二進制文件中redis

        配置文件 redis-config:緩存

 #快照文件名稱
 dbfilename "dump.rdb"
 # 快照文件純粹的位置
 dir "/user/local/redis/data"
 # 生成策略
 save 900 1
 save 300 10
 save 60 1000  # 60秒內,達到1000次改動生成快照

        優勢 :文件恢復速度快
        缺點:未到達快照生成時間的狀況下,redis 宕機會丟失部分數據
        存儲命令:
                save:同步操做,會阻塞 redis 其餘命令,不會消耗額外內存
                bgsave:異步操做,在生成子進程執行調用 fork 函數時 會有短暫阻塞,redis 後臺使用 bgsave 生成快照安全

2. AOF

    記錄每次對服務器的寫操做
    配置文件 redis-config:服務器

# 開啓 aof
  appendonly  yes
  # 文件名
  appendfilename  "appendonly.aof"
  # 存放路徑
  dir /user/local/redis/data
  # 配置策略,只容許選擇一個
  #appendfsync  always
  appendfsync everysec 
  #appendfsync no

    生成策略:
        appendfsync  always:每次有新的命令追加到 aof  文件時就執行一次 fsync,很是慢,同時很是安全
        appendfsync  everysec:每秒 fsync 一次,足夠快(和rdb差很少),而且在故障時只會丟失1秒鐘的數據。1秒內的數據會先寫到緩存裏,一次性寫到磁盤
        appendfsync  no:從不 fsync, 將數據交給操做系統來處理,更快,但更不安全app

    aof 重寫:
        根據當前內存數據從新生成命令行數據,保持在日誌文件中。
        配置:
            1. #  auto-aof-rewrite-min-size  64 mb        aof文件至少達到64M纔會自動重寫,文件過小恢復速度原本就很快,重寫的意義不大
            2.  # auto-aof-rewrite-percentage  100        aof 文件自上一次重寫,文件大小增加了100%則再次觸發重寫
        手動重寫:
            redis 客戶端執行命令 bgrewriteaof,rewrite 是 fork一個子進程來重寫日誌異步

    優勢:數據更安全
    缺點:文件恢復速度慢函數

3. Redis 4.0 混合持久化

    配置:# aof-use-rdb-preamble  yes
    在 aof 重寫時,再也不是單純的將內存數據轉換爲resp命令寫入 aof 文件,而是將重寫這一刻以前的內存作 rdb 快照處理,而且將 rdb 快照內容和增量的 aof 修改內存數據命令存在一塊兒,都寫入新的 aof 文件,寫入的時候會生成一個新的問題件,等重寫完成後再覆蓋原有的 aof 文件。spa

相關文章
相關標籤/搜索