1 數據存儲
Redis是基於內存的緩存中間件,共有5種存儲數據的方式,分別爲string,list,set,zset和hash,同時,Redis具備持久化數據的功能,即RDB和AOF,默認爲RDB方式。
2 數據備份
數據持久化到磁盤:rdb和aof兩種方式,默認rdb方式。
2.1 快照持久化
快照持久化即RDB持久化數據是將當前數據庫中的數據備份到*.rdb文件中,配置文件:
# 備份文件名稱:dump.rdb
dbfilename dump.rdb
# 備份文件位置
dir /var/lib/redis
# 保存快照
# 格式:save 時間間隔(秒) key改變的最少個數
# save 900 1:每900秒,檢查key改變個數,
# 當至少有1個key改變,則保存快照
save 900 1
save 300 10
save 60 10000
Redis通過saveparam結構體保存save參數
struct{
time_t seconds;
int changes;
}
服務器結構體redisSever添加了三個字段:
saveparams:保存所有save參數;
dirty:保存上一次成功執行SAVE或BGSAVE命令之後,服務器對數據庫執行的修改次數;
lastsave:記錄服務器上一次執行SAVE和BGSAVE的UNIX時間戳;
struct{
struct saveparam *saveparams;
long long dirty;
time_t lastsave;
}
rdb文件位置:/var/lib/redis,文件爲dump.rdb,使用vim打開,內容如下:
REDIS0008ú redis-ver^E4.0.9ú
redis-bitsÀ@ú^EctimeÂ<98>±ª^ú^Hused-memÂ^@^Q^L^@ú^Laof-preambleÀ^@þ^@û^L^H^@^S¬í^@^Et^@^LuserInfosObj^@ü5^@<9c>^Rr^A^@^@^@,refresh:1875c460-2d69-47e3-a240-f0c9020b7b33Ã@üAB^_¬í^@^Esr^@Lorg.springframework.secu^]rity.oauth2.common.DefaultExpi@/^AOA@^\^ZRefreshToken/ßGc<9d>ÐÉ·^B^@^AL^@
持久化的rdb文件爲Redis的數據格式,可看出部分的存儲數據,如refresh。
2.2 AOF持久化
默認情況Redis通過異步轉存數據到磁盤,這種方式可滿足大部分應用需求,但是由於Redis進程問題和斷電會丟失幾分鐘寫入的數據。Append Only File模式是另一種更好的持久化方案,該方式在斷電或單次寫入錯誤(操作系統正常運行)情況下僅會丟失1秒的數據,RDB和AOF兩種方式可以同時使用,若同時使用,默認會載入AOF數據,AOF保存的數據更加可靠(丟失數據更少)。
# 配置,默認no,關閉
appendonly no
# 文件名稱
appendfilename "appendonly.aof"
# 保存週期:共有三種模式
# always:實時保存,AOF緩衝區所有內容寫入並同步到AOF文件中數據安全性高,CPU資源佔用較多
# everysec:每秒同步一次數據,將AOF緩衝區所有數據寫入AOF文件中,並且這個同步操作由一個線程專門負責執行,數據安全性不如always,噹噹服務器出現故障時會出現1s的數據空窗期,但是CPU消耗比always小
# no:將AOF緩衝區所有內容寫入到AOF文件,但不對AOF文件進行同步,何時同步由操作系統決定,CPU消耗較低,但數據安全性較差,且單次同步時間最長
appendfsync everysec
3 問題
3.1 快照持久化失敗
- 問題
1871:M 09 May 11:02:15.096 * Background saving started by pid 19285
19285:C 09 May 11:02:15.096 # Failed opening the RDB file dump.rdb (in server root dir /var/lib/redis) for saving: Permission denied - 原因
*.rdb文件權限不足 - 方案
修改*.rdb文件權限,
文件位置:/var/lib/redis
chmod 766 dump.rdb
4 小結
- Redis基於內存緩存的中間件,同時具有持久化數據的功能,共有兩種方式:RDB和AOF方式;
- AOF方式持久化數據最多丟失1秒的數據,RDB依據的規則,會丟失幾分鐘的數據;
- AOF和RDB持久化數據可同時使用,兩者同時開啓時,默認讀取AOF數據;
【參考文獻】
[1]https://blog.csdn.net/u014466635/article/details/80081378
[2]https://www.cnblogs.com/itdragon/p/7906481.html
[3]https://baijiahao.baidu.com/s?id=1643385491075066750&wfr=spider&for=pc