Redis的持久化之RDB方式

RDB方式 Redis是默認支持的java

 

優點:只有一個文件,時間間隔的數據,能夠歸檔爲一個文件,方便壓縮轉移(就一個文件)redis

 

劣勢:若是宕機,數據損失比較大,由於它是沒一個時間段進行持久化操做的。也就是積攢的數據比較多,一旦懵逼,就完全懵逼了spa

 

配置:orm

[root@localhost redis]# vi redis.conf server

編輯redis.confblog

往下拉:進程

QQ鎴浘20170718091223.jpg

 

這裏save 900 1 表示 每900秒內至少有1個kery發生變化,就持久化it

save 300 10表示 每300秒內至少有10個key發生變化,就持久化cli

save 60 10000表示 每60秒內至少有10000個key發生變化,就持久化配置

 

再往下拉:

QQ鎴浘20170718091658.jpg

 

這裏有個dbfilename配置 是 保存的持久化的文件名 默認是dump.rdb

 

再往下:

QQ鎴浘20170718091821.jpg

 

dir ./ 表示文件存儲路徑是當前路徑;

 

 

咱們退出

QQ鎴浘20170718092622.jpg

 

當前路徑裏確實是有這個文件的。

 

 

RDB北風和恢復數據  

假如遇到斷電或者宕機或者天然災害, 咱們須要恢復數據 咱們模擬下。

咱們先重置下數據

shutdown關閉下redis

127.0.0.1:6379> shutdown

not connected> exit

[root@localhost redis]# ll

總用量 52

drwxr-xr-x. 2 root root   134 7月   6 09:18 bin

-rw-r--r--. 1 root root    99 7月  18 10:41 dump.rdb

-rw-r--r--. 1 root root 46697 7月  18 10:41 redis.conf

而後刪除掉rdb文件,再啓動redis

[root@localhost redis]# rm -rf dump.rdb 

[root@localhost redis]# ll

總用量 48

drwxr-xr-x. 2 root root   134 7月   6 09:18 bin

-rw-r--r--. 1 root root 46697 7月  18 10:41 redis.conf

[root@localhost redis]# ./bin/redis-server ./redis.conf 

[root@localhost redis]# ./bin/redis-cli

127.0.0.1:6379> keys *

(empty list or set)

這時候是沒有數據的

 

這時候啓動 是沒數據的

[root@localhost redis]# ./bin/redis-server ./redis.conf 

[root@localhost redis]# ./bin/redis-cli

127.0.0.1:6379> keys *

(empty list or set)

 

咱們搞幾個key,而後shutdown save 保存退出

127.0.0.1:6379> set n1 1

OK

127.0.0.1:6379> set n2 2

OK

127.0.0.1:6379> set n3 3

OK

127.0.0.1:6379> shutdown save

not connected> exit

 

假如這時候 咱們再重啓redis 這時候啓動過程會進程rdb check驗證 而後加載redis目錄下rdb文件;加載數據;

咱們驗證下:

 

咱們再次啓動

[root@localhost redis]# ./bin/redis-server ./redis.conf 

[root@localhost redis]# ./bin/redis-cli

127.0.0.1:6379> keys *

1) "n1"

2) "n3"

3) "n2"

說明是數據加載進來了;

 

這裏咱們把redis下的rdb文件剪切到其餘地方去 而後再啓動試下

[root@localhost redis]# ll

總用量 52

drwxr-xr-x. 2 root root   134 7月  18 11:05 bin

-rw-r--r--. 1 root root    99 7月  18 11:35 dump.rdb

-rw-r--r--. 1 root root 46697 7月  18 10:41 redis.conf

[root@localhost redis]# mv dump.rdb /root/

[root@localhost redis]# ll

總用量 48

drwxr-xr-x. 2 root root   134 7月  18 11:05 bin

-rw-r--r--. 1 root root 46697 7月  18 10:41 redis.conf

[root@localhost redis]# ll /root/

總用量 8

-rw-------. 1 root root 1261 7月   6 05:42 anaconda-ks.cfg

-rw-r--r--. 1 root root   99 7月  18 11:35 dump.rdb

-rw-r--r--. 1 root root    0 7月  13 22:00 java牛逼

drwxr-xr-x. 2 root root    6 7月  13 22:07 java書籍

 

剪切到了root下

 

這時候再啓動下:

[root@localhost redis]# ./bin/redis-server ./redis.conf 

[root@localhost redis]# ./bin/redis-cli

127.0.0.1:6379> keys *

(empty list or set)

數據沒了

 

恢復數據的話 咱們只須要把備份文件搞到redis下便可

再複製過來便可:

[root@localhost redis]# cp /root/dump.rdb /usr/local/redis/

cp:是否覆蓋"/usr/local/redis/dump.rdb"? y

[root@localhost redis]# ./bin/redis-server ./redis.conf 

[root@localhost redis]# ./bin/redis-cli

127.0.0.1:6379> keys *

1) "n2"

2) "n1"

3) "n3"

 

這時候 數據就有了 這就是恢復過程;

 

繞了一大圈 總結下

平時咱們能夠按期把rdb文件備份到指定地方 須要恢復的時候 直接把rdb搞到redis下便可;

相關文章
相關標籤/搜索