1. 程式人生 > >redis 持久化 RDB與AOF

redis 持久化 RDB與AOF

redis持久化

   - redis是一種記憶體型資料庫,一旦伺服器程序退出,資料庫資料就會丟失,為了解決這個問題,redis提供了兩種持久化的方案,將記憶體中的資料儲存到磁碟中,避免資料的丟失。

 - RDB持久化

   - 這個功能可以將redis在記憶體中的狀態儲存到磁碟中,它可以手動執行。

   - 也可以在redis。conf中配置,定期執行。

   - RDB持久化產生的RDB檔案是一個經過壓縮的二進位制檔案,這個檔案將儲存在硬碟中,redis可以通過這個檔案還原資料庫當時的狀態

#配置檔案資訊  redis.conf

daemonize yes
port 
6379 logfile /data/6379/redis.log dir /data/6379 #定義持久化檔案儲存位置 dbfilename dbmp.rdb #rdb持久化檔案 bind 10.0.0.10 127.0.0.1 #redis繫結地址 requirepass redhat #redis登入密碼 save 900 1 #rdb機制 每900秒 有1個修改記錄 save 300 10 #每300秒 10個修改記錄 save 60 10000 #每60秒內 10000修改記錄

  - 啟動redis

   - 登陸redis設定一個key

   - 此時檢查,/data/6379中有沒有dbmp.rdb檔案

   - 使用save觸發持久化,將資料寫入RDB檔案

127.0.0.1:6379> set name  jam
OK
127.0.0.1:6379> save
OK

 - AOF持久化
   - 記錄伺服器執行的所有變更操作(例如set del等),並在伺服器啟動時,通過重新執行這些命令來還原資料集

   - AOF檔案中的命令全部以redis協議的格式儲存,新命令追加到檔案末尾

     - 優點:最大程度保證資料不丟失

     - 日誌記錄非常大

# 配置檔案

daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379
dbfilename  dbmp.rdb
requirepass redhat
save 900 1
save 300 10
save 60  10000
appendonly yes
appendfsync everysec

   - 啟動redis

   - 檢查redis資料目錄/data/6379是否產生了AOF檔案

[[email protected] 6379]# ls
appendonly.aof  dbmp.rdb  redis.log

   - 登陸redis,寫入資料,實時檢查aof檔案資訊

[[email protected] 6379]# tail -f appendonly.aof

    - 設定新key,檢查aof資訊,然後關閉redis,檢查資料是否持久化

 - redis不重啟,切換RDB備份到AOF備份

# redis.conf服務端配置檔案

daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379
dbfilename  dbmp.rdb
save 900 1                    #rdb機制 每900秒 有1個修改記錄
save 300 10                    #每300秒        10個修改記錄
save 60  10000                #每60秒內        10000修改記錄
 # 啟動
redis-server redis.conf

   - 登陸redis

   - 插入資料

127.0.0.1:6379> set name jam
OK
127.0.0.1:6379> set age 18
OK
127.0.0.1:6379> save
OK

   - 檢查RDB檔案 /data/6379

   - 備份這個rdb檔案,保證資料安全

   - 執行命令開始AOF持久化

127.0.0.1:6379> CONFIG set appendonly yes   #開啟AOF功能
OK
127.0.0.1:6379> CONFIG SET save ""  #關閉RDB功能
OK

   - 確保資料庫的key數量正確

127.0.0.1:6379> keys *
1) "age"
2) "name"

   - 確保插入新的key,AOF檔案會記錄

127.0.0.1:6379> set title python
OK

此時已經切換,但還得修改redis.conf新增AOF設定,不然重啟後,通過config set 的配置將丟失