## # Redis持久化介紹php
全部的數據都存在內存中,從內存當中同步到硬盤上,這個過程叫作持久化過程。持久化操做,兩種方式:rdb方式、aof方式,能夠單獨使用或者結合使用。redis
rdb持久化方法:在指定的時間間隔寫入硬盤 aof方式:將以日誌,記錄每個操做,服務器啓動後就構建數據庫。數據庫
RDB方式 Redis是默認支持的安全
優點:只有一個文件,時間間隔的數據,能夠歸檔爲一個文件,方便壓縮轉移(就一個文件)服務器
## #Redis的持久化之RDB方式**app
劣勢:若是宕機,數據損失比較大,由於它是每個時間段進行持久化操做的。也就是積攢的數據比較多,一旦懵逼,就完全懵逼了url
[root@hdp-01 redis]# vi redis.conf spa
往下拉:3d
這裏save 900 1 表示 每900秒內至少有1個kery發生變化 就持久化日誌
save 300 10表示 每300秒內至少有10個key發生變化 就持久化
save 60 10000表示 每60秒內至少有10000個key發生變化 就持久化
再往下拉
這裏有個dbfilename配置 是保存的持久化的文件名 默認是dump.rdb
dir ./ 表示文件存儲路徑是當前路徑
退出
[root@hdp-01 redis]# ll總用量 64drwxr-xr-x. 2 root root 134 9月 1 16:30 bin-rw-r--r--. 1 root root 109 9月 1 17:30dump.rdb-rw-r--r--. 1 root root 58767 9月 3 07:04 redis.conf
當前路徑裏確實是有這個文件的
## # RDB備份和恢復數據
假如遇到斷電或者宕機或者天然災害 須要恢復數據 咱們模擬下 先重置下數據
shutdown關閉下redis
127.0.0.1:6379> shutdown
not connected> exit
[root@hdp-01redis]# ll
總用量 52
drwxr-xr-x. 2 root root bin-rw-r--r--. 1 root root dump.rdb-rw-r--r--. 1 root root redis.conf
刪掉rdb文件 再啓動redis 這時候啓動 是沒數據的
[root@hdp-01]# rm -rf dump.rdb [root@hdp-01redis]# ./bin/redis-server ./redis.conf [root@hdp-01redis]# ./bin/redis-cli127.0.0.1:6379> keys *(empty list or set)
搞幾個key 而後shutdown save 保存退出
[url=]
[/url]
127.0.0.1:6379> set n1 1OK127.0.0.1:6379> set n2 2OK127.0.0.1:6379> set n3 3OK127.0.0.1:6379> shutdown savenot connected> exit[url=]
[/url]
假如這時候 咱們再重啓redis 這時候啓動過程會進程rdb check驗證 而後加載redis目錄下rdb文件 加載數據
驗證下:咱們再次啓動
[url=]
[/url]
[root@hdp-01 redis]# ./bin/redis-server ./redis.conf [root@hdp-01 redis]# ./bin/redis-cli127.0.0.1:6379> keys *1) "n1"2) "n3"3) "n2"[url=]
[/url]
說明是數據加載進來了
這裏咱們把redis下的rdb文件剪切到其餘地方去 而後再啓動試下
[root@hdp-01 redis]# mv dump.rdb /root/
剪切到root下
這時候再啓動下
[root@hdp-01 redis]# ./bin/redis-server ./redis.conf [root@hdp-01 redis]# ./bin/redis-cli127.0.0.1:6379> keys *(empty list or set)
發現全部數據都沒了 恢復數據的話 咱們只須要把備份文件搞到redis下便可
[url=]
[/url]
[root@hdp-01 redis]# cp /root/dump.rdb /usr/local/redis/cp:是否覆蓋"/usr/local/redis/dump.rdb"? y[root@hdp-01 redis]# ./bin/redis-server ./redis.conf [root@hdp-01 redis]# ./bin/redis-cli127.0.0.1:6379> keys *1) "n2"2) "n1"3) "n3"[url=]
[/url]
## #Redis的持久化之AOF方式**
AOF方式:將以日誌,記錄每個操做
優點:安全性相對RDB方式高不少
劣勢:效率相對RDB方式低不少
## # AOF備份和恢復數據
AOF方式:將以日誌,記錄每個操做
優點:安全性相對RDB方式高不少;劣勢:效率相對RDB方式低不少;
配置:
[root@hdp-01 redis]# vi redis.conf
編輯redis.conf
appendonly no默認關閉aof方式 咱們修改爲yes 就開啓
下面那個是默認的aof文件名
再往下拉:
這裏是三種同步策略:
always 是 只要發生修改 當即同步 (推薦實用 安全性最高)
everysec 是 每秒同步一次
no是不一樣步
修改爲always
從新啓動redis 隨便加幾個key
這裏就有一個appendonly.aof文件
重置數據
[root@hdp-01 redis]# rm -rf dump.rdb
啓動redis
[root@hdp-01 redis]# ./bin/redis-server ./redis.conf [root@hdp-01 redis]# ./bin/redis-cli127.0.0.1:6379> keys *(empty list or set)
目前數據庫是空 添加數據
[url=]
[/url]
127.0.0.1:6379> set n1 1OK127.0.0.1:6379> set n2 2OK127.0.0.1:6379> set n3 3OK127.0.0.1:6379> shutdown nosavenot connected> exit[url=]
[/url]
把aof文件剪切到其餘地方 啓動
[root@hdo-01 redis]# mv appendonly.aof /root/[root@hdo-01 redis]# ./bin/redis-server ./redis.conf [root@hdp-01 redis]# ./bin/redis-cli127.0.0.1:6379> keys *(empty list or set)
咱們再把aof文件複製回來
[url=]
[/url]
[root@hdp-01 redis]# cp /root/appendonly.aof /usr/local/redis/cp:是否覆蓋"/usr/local/redis/appendonly.aof"? y[root@hdp-01 redis]# ./bin/redis-server ./redis.conf [root@hdp-01 redis]# ./bin/redis-cli127.0.0.1:6379> keys *1) "n1"2) "n3"3) "n2"[url=]
[/url]