您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)Redis持久化RDB有什么用的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
作用:在指定的時間間隔內(nèi)將內(nèi)存中的數(shù)據(jù)集快照寫入磁盤,即Snapshot快照.它恢復(fù)時將快照文件直接讀到內(nèi)存中
原理:Redis會單獨創(chuàng)建(fork)一個子進程來進行持久化,會先將數(shù)據(jù)寫入到
一個臨時文件中,待持久化過程都結(jié)束了,再用這個臨時文件替換上次持久化好的文件。
整個過程中,主進程是不進行任何IO操作的,這就確保了極高的性能
如果需要進行大規(guī)模數(shù)據(jù)的恢復(fù),且對于數(shù)據(jù)恢復(fù)的完整性不是非常敏感,那RDB方
式要比AOF方式更加的高效。RDB的缺點是最后一次持久化后的數(shù)據(jù)可能丟失。
缺點:有可能丟失最后一次的保存
Fork: fork的作用是復(fù)制一個與當(dāng)前進程一樣的進程。新進程的所有數(shù)據(jù)(變量、環(huán)境變量、程序計數(shù)器等)數(shù)值都和原進程一致,但是是一個全新的進程,并作為原進程的子進程
文件:Rdb保存的是dump.rdb文件
配置:SNAPSHOTTING快照
格式:save <seconds> <changes>-> save 秒鐘 寫操作次數(shù)
默認:默認觸發(fā)條件
15分鐘(900秒) 改1次
5分鐘(300秒)改10次
1分鐘(60 秒)改10000次
禁用:不設(shè)置 或者 save ""
設(shè)置 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 會迅速將內(nèi)存數(shù)據(jù)保存至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 表示不在乎數(shù)據(jù)不一致或者有其他的手段發(fā)現(xiàn)和控制、
rdbcompression:對于存儲到磁盤中的快照,可以設(shè)置是否進行壓縮存儲。如果是的話,redis會采用LZF算法進行壓縮。如果你不想消耗CPU來進行壓縮的話,可以設(shè)置為關(guān)閉此功能,默認yes 開啟
rdbchecksum:在存儲快照后,還可以讓redis使用CRC64算法來進行數(shù)據(jù)校驗,但是這樣做會增加大約10%的性能消耗,如果希望獲取到最大的性能提升,可以關(guān)閉此功能
dbfilename dump.rdb :備份文件名稱
dir ./ : 指定本地數(shù)據(jù)庫存放目錄
12.1 配置文件中默認的快照配置,冷拷貝后重新使用,可以cp dump.rdb dump_new.rdb
12.2 命令save或者是bgsave,
Save:save時只管保存,其他不管,全部阻塞
BGSAVE:Redis會在后臺異步進行快照操作,快照操作同時還可以響應(yīng)客戶端請求??梢酝ㄟ^lastsave命令獲取最后一次成功執(zhí)行快照的時間。
12.3 執(zhí)行flushall命令,也會產(chǎn)生dump.rdb文件,但里面是空的,無意義。
將備份文件(dump.rdb)移動到redis安裝目錄并啟動服務(wù)即可,CONFIG GET dir獲取目錄
適合大規(guī)模的數(shù)據(jù)恢復(fù),對數(shù)據(jù)完整性和一致性要求不高
在一定間隔時間做一次備份,所以如果redis意外down掉的話,就會丟失最后一次快照后的所有修改,fork的時候,內(nèi)存中的數(shù)據(jù)被克隆了一份,大致2倍的膨脹性需要考慮
動態(tài)所有停止RDB保存規(guī)則的方法:redis-cli config set save ""
感謝各位的閱讀!關(guān)于“Redis持久化RDB有什么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。