Redis(12)--Redis的持久化之RDB方式
2018-03-15 17:46
369 查看
RDB方式 Redis是默认支持的
优势:只有一个文件,时间间隔的数据,可以归档为一个文件,方便压缩转移(就一个文件)。
劣势:如果宕机,数据损失比较大,因为它是没一个时间段进行持久化操作的。也就是积攒的数据比较多,一旦懵逼,就彻底懵逼了。
配置如下:
编辑redis.conf
往下拉:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/15/7e1379cfed5de693c8f4031defdc84bb)
这里save 900 1 表示 每900秒内至少有1个kery发生变化,就持久化
save 300 10表示 每300秒内至少有10个key发生变化,就持久化
save 60 10000表示 每60秒内至少有10000个key发生变化,就持久化
再往下拉:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/15/2642a535cb80f913d4d700c17a4e2cc0)
这里有个dbfilename配置 是 保存的持久化的文件名 默认是dump.rdb
再往下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/15/53201aad068e4a6795591498d1a8ecf3)
dir ./ 表示文件存储路径是当前路径;
我们退出,当前路径里确实是有这个文件的。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/15/8626a61bf2580385ae8055cf7cc626a1)
RDB备份和恢复数据
假如遇到断电或者宕机或者自然灾害, 我们需要恢复数据 我们模拟下。
我们先重置下数据
shutdown关闭下redis
然后删除掉rdb文件,再启动redis
这时候是没有数据的
我们搞几个key,然后shutdown save 保存退出
假如这时候 我们再重启redis 这时候启动过程会进程rdb check验证 然后加载redis目录下rdb文件;加载数据;
我们验证下:
我们再次启动:
说明是数据加载进来了;
这里我们把redis下的rdb文件剪切到其他地方去 然后再启动试下
剪切到了root下
这时候再启动下,数据没了:
恢复数据的话 我们只需要把备份文件搞到redis下即可
再复制过来即可:
总结:
平时我们可以定期把rdb文件备份到指定地方 需要恢复的时候 直接把rdb搞到redis下即可。
关闭redis服务:
注意:有时候直接采用如上方式关闭不了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"
相关文章推荐
- Redis学习——Redis持久化之RDB备份方式保存数据
- Redis学习——Redis持久化之RDB备份方式保存数据
- Redis详解之-事件订阅和持久化存储方式(RDB和AOF)(二)
- redis的持久化(RDB和AOF方式)
- redis的持久化方式:RDB和AOF
- Redis支持的两种持久化备份方式(RDB & AOF)
- 结合redis设计与实现的redis源码学习-12-RDB持久化(rdb.h/rio.h)
- 辛星解读Redis中的RDB持久化方式
- redis 两种持久化方式分析---rdb/aof
- redis的持久化方式 RDB和AOF
- redis学习笔记---redis的持久化(RDB和AOF方式)
- redis的持久化(RDB和AOF方式)
- Redis的持久化之RDB方式
- redis两种持久化方式rdb和aof
- (七)Redis之持久化之RDB方式
- redis的持久化方式RDB和AOF的区别
- Redis的两种持久化方式-快照持久化(RDB)和AOF持久化
- Redis持久化原理及配置详解(RDB方式和AOF方式)
- Redis——持久化方式RDB和AOF的区别
- redis笔记之两种持久化备份方式(RDB & AOF)