您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Redis持久化RDB有什么用的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
作用:在指定的時間間隔內將內存中的數據集快照寫入磁盤,即Snapshot快照.它恢復時將快照文件直接讀到內存中
原理:Redis會單獨創建(fork)一個子進程來進行持久化,會先將數據寫入到
一個臨時文件中,待持久化過程都結束了,再用這個臨時文件替換上次持久化好的文件。
整個過程中,主進程是不進行任何IO操作的,這就確保了極高的性能
如果需要進行大規模數據的恢復,且對于數據恢復的完整性不是非常敏感,那RDB方
式要比AOF方式更加的高效。RDB的缺點是最后一次持久化后的數據可能丟失。
缺點:有可能丟失最后一次的保存
Fork: fork的作用是復制一個與當前進程一樣的進程。新進程的所有數據(變量、環境變量、程序計數器等)數值都和原進程一致,但是是一個全新的進程,并作為原進程的子進程
文件:Rdb保存的是dump.rdb文件
配置:SNAPSHOTTING快照
格式:save <seconds> <changes>-> save 秒鐘 寫操作次數
默認:默認觸發條件
15分鐘(900秒) 改1次
5分鐘(300秒)改10次
1分鐘(60 秒)改10000次
禁用:不設置 或者 save ""
設置 save 120 10 (120秒改10次)
[root@VM_0_7_centos ~]# cd /usr/local/bin [root@VM_0_7_centos bin]# ll total 37820 -rw-r--r-- 1 root root 231 Jun 19 18:35 dump.rdb -rwxr-xr-x 1 root root 4739968 Jun 12 23:09 redis-benchmark -rwxr-xr-x 1 root root 9634424 Jun 12 23:09 redis-check-aof -rwxr-xr-x 1 root root 9634424 Jun 12 23:09 redis-check-rdb -rwxr-xr-x 1 root root 5050384 Jun 12 23:09 redis-cli lrwxrwxrwx 1 root root 12 Jun 12 23:09 redis-sentinel -> redis-server -rwxr-xr-x 1 root root 9634424 Jun 12 23:09 redis-server -rwxr-xr-x 1 root root 9840 Jun 12 22:55 tclsh8.6 [root@VM_0_7_centos bin]# rm -f dump.drb
127.0.0.1:9736> set k1 v1 OK 127.0.0.1:9736> set k2 v2 OK 127.0.0.1:9736> set k3 v3 OK 127.0.0.1:9736> set k4 v4 OK 127.0.0.1:9736> set k5 v5 OK 127.0.0.1:9736> set k6 v6 OK 127.0.0.1:9736> set k7 v7 OK 127.0.0.1:9736> set k8 v8 OK 127.0.0.1:9736> set k9 v9 OK 127.0.0.1:9736> set k10 v10 OK 127.0.0.1:9736> set k11 v11 OK 127.0.0.1:9736> set k12 v12 OK 127.0.0.1:9736> set k13 v13
[root@VM_0_7_centos bin]# cp dump.rdb dump-bk.rdb
[root@VM_0_7_centos bin]# ll total 37824 -rw-r--r-- 1 root root 275 Sep 23 10:48 dump-bk.rdb -rw-r--r-- 1 root root 275 Sep 23 10:43 dump.rdb -rwxr-xr-x 1 root root 4739968 Jun 12 23:09 redis-benchmark -rwxr-xr-x 1 root root 9634424 Jun 12 23:09 redis-check-aof -rwxr-xr-x 1 root root 9634424 Jun 12 23:09 redis-check-rdb -rwxr-xr-x 1 root root 5050384 Jun 12 23:09 redis-cli lrwxrwxrwx 1 root root 12 Jun 12 23:09 redis-sentinel -> redis-server -rwxr-xr-x 1 root root 9634424 Jun 12 23:09 redis-server -rwxr-xr-x 1 root root 9840 Jun 12 22:55 tclsh8.6
127.0.0.1:9736> FLUSHALL OK 127.0.0.1:9736> keys * (empty array) 127.0.0.1:9736> SHUTDOWN not connected> exit [root@VM_0_7_centos bin]#
127.0.0.1:9736> keys * (empty array)
注意:FLUSHALL SAVE 或 SHUTDOWN 會迅速將內存數據保存至dump.rdb
[root@VM_0_7_centos bin]# rm -f dump.rdb [root@VM_0_7_centos bin]# cp dump-bk.rdb dump.rdb
127.0.0.1:9736> keys * 1) "k1" 2) "k3" 3) "k4" 4) "user" 5) "k2" 6) "list01" 7) "k8" 8) "k10" 9) "k6" 10) "k9" 11) "k7" 12) "list02" 13) "k5"
stop-writes-on-bgsave-error yes: 保存出錯時停止保存
如果配置為no 表示不在乎數據不一致或者有其他的手段發現和控制、
rdbcompression:對于存儲到磁盤中的快照,可以設置是否進行壓縮存儲。如果是的話,redis會采用LZF算法進行壓縮。如果你不想消耗CPU來進行壓縮的話,可以設置為關閉此功能,默認yes 開啟
rdbchecksum:在存儲快照后,還可以讓redis使用CRC64算法來進行數據校驗,但是這樣做會增加大約10%的性能消耗,如果希望獲取到最大的性能提升,可以關閉此功能
dbfilename dump.rdb :備份文件名稱
dir ./ : 指定本地數據庫存放目錄
12.1 配置文件中默認的快照配置,冷拷貝后重新使用,可以cp dump.rdb dump_new.rdb
12.2 命令save或者是bgsave,
Save:save時只管保存,其他不管,全部阻塞
BGSAVE:Redis會在后臺異步進行快照操作,快照操作同時還可以響應客戶端請求。可以通過lastsave命令獲取最后一次成功執行快照的時間。
12.3 執行flushall命令,也會產生dump.rdb文件,但里面是空的,無意義。
將備份文件(dump.rdb)移動到redis安裝目錄并啟動服務即可,CONFIG GET dir獲取目錄
適合大規模的數據恢復,對數據完整性和一致性要求不高
在一定間隔時間做一次備份,所以如果redis意外down掉的話,就會丟失最后一次快照后的所有修改,fork的時候,內存中的數據被克隆了一份,大致2倍的膨脹性需要考慮
動態所有停止RDB保存規則的方法:redis-cli config set save ""
感謝各位的閱讀!關于“Redis持久化RDB有什么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。