您的位置:首页 > 数据库 > Redis

Redis(12)--Redis的持久化之RDB方式

2018-03-15 17:46 369 查看
RDB方式 Redis是默认支持

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

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

配置如下:

[root@localhost redis]# vi redis.conf


编辑redis.conf

往下拉:



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

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

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)


我们搞几个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下

[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]# ./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服务:

./bin/redis-cli shutdown


注意:有时候直接采用如上方式关闭不了redis进程,我们可以采用如下方式:

[root@bogon redis]# ps -ef | grep -i redis
root     58247     1  0 20:15 ?        00:00:00 ./bin/redis-server 127.0.0.1:6379
root     58280 58197  0 20:20 pts/1    00:00:00 grep -i redis
[root@bogon redis]# kill -s 9 58247
[root@bogon redis]# ps -ef | grep -i redis
root     58284 58197  0 20:21 pts/1    00:00:00 grep -i redis
[root@bogon redis]# ./bin/redis-server ./redis.conf
[root@bogon redis]# ./bin/redis-cli
127.0.0.1:6379> keys *
1) "name"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: