redis 持久化 RDB與AOF
- redis持久化
- redis是一種記憶體型資料庫,一旦伺服器程序退出,資料庫資料就會丟失,為了解決這個問題,redis提供了兩種持久化的方案,將記憶體中的資料儲存到磁碟中,避免資料的丟失。
- RDB持久化
- 這個功能可以將redis在記憶體中的狀態儲存到磁碟中,它可以手動執行。
- 也可以在redis。conf中配置,定期執行。
- RDB持久化產生的RDB檔案是一個經過壓縮的二進位制檔案,這個檔案將儲存在硬碟中,redis可以通過這個檔案還原資料庫當時的狀態
#配置檔案資訊 redis.conf daemonize yes port6379 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 的配置將丟失