溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Redis持久化RDB有什么用

發(fā)布時間:2022-01-05 17:40:39 來源:億速云 閱讀:129 作者:小新 欄目:大數(shù)據(jù)

這篇文章給大家分享的是有關(guān)Redis持久化RDB有什么用的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

Redis 持久化

一 、RDB

作用:在指定的時間間隔內(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次)

1.刪除備份文件

[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

2.啟動redis服務(wù)
3.設(shè)置值

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

4. 備份

[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

5. 刪除信息

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]#

6. 重連查看內(nèi)容

127.0.0.1:9736> keys *
(empty array)

注意:FLUSHALL   SAVE 或 SHUTDOWN 會迅速將內(nèi)存數(shù)據(jù)保存至dump.rdb 

7. shutdown exit

8. 恢復(fù)備份的文件

[root@VM_0_7_centos bin]# rm -f dump.rdb
[root@VM_0_7_centos bin]# cp dump-bk.rdb dump.rdb

9.查看恢復(fù)的信息

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"

10. 及時備份命令save

三、. 其他配置

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ù)庫存放目錄

四、關(guān)鍵

12. 如何觸發(fā)RDB快照

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文件,但里面是空的,無意義。

13. 如何恢復(fù)

將備份文件(dump.rdb)移動到redis安裝目錄并啟動服務(wù)即可,CONFIG GET dir獲取目錄

14.優(yōu)勢

適合大規(guī)模的數(shù)據(jù)恢復(fù),對數(shù)據(jù)完整性和一致性要求不高

15.劣勢

在一定間隔時間做一次備份,所以如果redis意外down掉的話,就會丟失最后一次快照后的所有修改,fork的時候,內(nèi)存中的數(shù)據(jù)被克隆了一份,大致2倍的膨脹性需要考慮

16.如何停止

動態(tài)所有停止RDB保存規(guī)則的方法:redis-cli config set save ""

17.小總結(jié)

 Redis持久化RDB有什么用

感謝各位的閱讀!關(guān)于“Redis持久化RDB有什么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責(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)容。

AI