RDB方式 Redis是默認支持的java
優點:只有一個文件,時間間隔的數據,能夠歸檔爲一個文件,方便壓縮轉移(就一個文件)redis
劣勢:若是宕機,數據損失比較大,由於它是沒一個時間段進行持久化操做的。也就是積攢的數據比較多,一旦懵逼,就完全懵逼了spa
配置:orm
[root@localhost redis]# vi redis.conf server
編輯redis.confblog
往下拉:進程
這裏save 900 1 表示 每900秒內至少有1個kery發生變化,就持久化it
save 300 10表示 每300秒內至少有10個key發生變化,就持久化cli
save 60 10000表示 每60秒內至少有10000個key發生變化,就持久化配置
再往下拉:
這裏有個dbfilename配置 是 保存的持久化的文件名 默認是dump.rdb
再往下:
dir ./ 表示文件存儲路徑是當前路徑;
咱們退出
當前路徑裏確實是有這個文件的。
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下便可;