Redis的持久化之RDB方式
概述
RDB方式,Redis是默认支持的
优势:只有一个文件,时间间隔的数据,可以归档为一个文件,方便压缩转移(就一个文件)
劣势:如果宕机,数据损失比较大,因为它是没一个时间段进行持久化操作的。也就是积攒的数据比较多,一旦懵逼,就彻底懵逼了
查看Redis配置
[root@localhost ~]# cd /usr/local/redis/
[root@localhost redis]# vi redis.conf
save 900 1 表示 每900秒内至少有1个key发生变化,就持久化
save 300 10表示 每300秒内至少有10个key发生变化,就持久化
save 60 10000表示 每60秒内至少有10000个key发生变化,就持久化
dbfilename配置是保存的持久化的文件名,默认是dump.rdb
dir ./
表示文件存储路径是当前路径
查看当前路径的文件
[root@localhost redis]# ll
当前路径里确实是有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下即可