java1234开源博客系统
博客信息

Redis的持久化之RDB方式

0
发布时间:『 2017-07-18 09:27』  博客类别:Redis  阅读(5754) 评论(0)

RDB方式 Redis是默认支持的

 

优势:只有一个文件,时间间隔的数据,可以归档为一个文件,方便压缩转移(就一个文件)


劣势:如果宕机,数据损失比较大,因为它是没一个时间段进行持久化操作的。也就是积攒的数据比较多,一旦懵逼,就彻底懵逼了


配置:

[root@localhost redis]# vi redis.conf 

编辑redis.conf

往下拉:

QQ鎴浘20170718091223.jpg


这里save 900 1 表示 每900秒内至少有1个kery发生变化,就持久化

save 300 10表示 每300秒内至少有10个key发生变化,就持久化

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下即可;


关键字:   Redis     持久化     RDB方式  
关注Java1234微信公众号
博主信息
Java1234_小锋
(知识改变命运,技术改变世界)
Powered by Java1234 V3.0 Copyright © 2012-2016 Java知识分享网 版权所有