概述

RDB方式,Redis是默认支持的

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

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

查看Redis配置

[root@localhost ~]# cd /usr/local/redis/
[root@localhost redis]# vi redis.conf

img

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

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

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

img

dbfilename配置是保存的持久化的文件名,默认是dump.rdb

img

dir ./ 表示文件存储路径是当前路径

查看当前路径的文件

[root@localhost redis]# ll

img

当前路径里确实是有dump.rdb这个文件的

备份和恢复数据

备份数据

删除已存在的备份文件

[root@localhost redis]# ls
bin dump.rdb redis.conf
[root@localhost redis]# rm dump.rdb
rm:是否删除普通文件 “dump.rdb”?y
[root@localhost redis]# ls
bin redis.conf

打开Redis服务

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

进入Redis客户端

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

查看所有key(此时是没有数据的)

127.0.0.1:6379> keys *
(empty list or set)

创建几个key

127.0.0.1:6379> set a1 1
OK
127.0.0.1:6379> set a2 2
OK
127.0.0.1:6379> set a3 3
OK
127.0.0.1:6379> keys *
1)”a3”
2)”a2”
3)”a1”

保存并关闭Redis(当前路径下多了一个备份文件dump.rdb)

127.0.0.1:6379> shutdown save
not connected> exit
[root@localhost redis]# ls
bin dump.rdb redis.conf

恢复数据

再次打开Redis服务,查看所有key,发现有数据(说明是数据加载进来了,Redis服务启动时会自动加载备份文件)

[root@localhost redis]# ./bin/redis-server ./redis.conf
[root@localhost redis]# ./bin/redis-cli
127.0.0.1:6379> keys *
1)”a2”
2)”a3”
3)”a1”

再次关闭Redis服务,将备份文件dump.rdb剪切到其它目录,然后启动Redis服务,查看所有key,发现是没有数据的(由于备份文件已经剪切到其它目录了,所以启动Redis服务时无法自动加载备份数据,查看所有key没有数据)

[root@localhost redis]# /usr/local/redis/bin/redis-cli shutdown
[root@localhost redis]# ls
bin dump.rdb redis.conf
[root@localhost redis]# mv dump.rdb /home/data/
[root@localhost redis]# ls
bin 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)

然后我们将之前剪切到其它目录的备份文件复制到Redis备份文件指定目录中,将新创建的备份文件(关闭Redis服务时自动创建)覆盖掉,启动Redis服务后又有数据了(Redis会在启动时加载备份文件)

[root@localhost redis]# cp /home/data/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)”a1”
2)”a3”
3)”a2”

总结

Redis服务在启动时自动加载备份文件,平时我们可以定期把rdb文件备份到指定地方,需要恢复的时候,直接把rdb搞到redis备份文件指定目录/usr/local/redis下即可

PS.

来源:Redis的持久化之RDB方式_Java开源博客系统-Powered by java1234