峰Redis学习(7)Redis 持久化RDB方式

本文详细介绍了 Redis 的 RDB 持久化机制,包括其工作原理、配置方法及如何通过 RDB 进行数据备份与恢复。RDB 方式作为 Redis 默认支持的持久化方案,能够在特定时间间隔将内存数据写入硬盘,实现数据持久化。

第一节:Redis 持久化介绍

redis所有的数据都存在内存中,所以速度非常快,但是一旦断电等情况,数据就没了。从内存当中同步到硬盘上,这个过程叫做持久化过程。
持久化操作,两种方式:rdb方式、aof方式,可以单独使用或者结合使用。
 
使用方法:
 rdb持久化方法:在指定的时间间隔写入硬盘
aof方式:将以日志,记录每一个操作,服务器启动后就构建数据库。
 
配置可以禁用 持久化功能。
也可以同时使用两种方式。
 

 

第二节:Redis 的持久化之RDB 方式

RDB方式 Redis是默认支持的
优势:只有一个文件,时间间隔的数据,可以归档为一个文件,方便压缩转移(就一个文件)
劣势:如果宕机,数据损失比较大,因为它是没一个时间段进行持久化操作的。也就是积攒的数据比较多,一旦懵逼,就彻底懵逼了
 
1)查看redis.conf配置:
#   like in the following example:
#
#   save ""

save 900 1
save 300 10
save 60 10000
这里save 900 1 表示 每900秒内至少有1个kery发生变化,就持久化
save 300 10表示 每300秒内至少有10个key发生变化,就持久化
save 60 10000表示 每60秒内至少有10000个key发生变化,就持久化
 
# The filename where to dump the DB
dbfilename dump.rdb

这里有个dbfilename配置 是 保存的持久化的文件名 默认是dump.rdb

# Note that you must specify a directory here, not a file name.
dir ./

dump.rdb文件的存储位置,dir ./ 表示文件存储路径是当前路径;

 

2)RDB备份和恢复数据
假如遇到断电或者宕机或者自然灾害, 我们需要恢复数据 我们模拟下:
a.先将数据全部置为空,启动是没有数据的:
[root@bogon redis]# ll
总用量 52
drwxr-xr-x. 2 root root   134 3月  31 20:51 bin
-rw-r--r--. 1 root root   117 4月   1 11:15 dump.rdb
-rw-r--r--. 1 root root 46689 4月   1 11:16 redis.conf
[root@bogon redis]# rm -rf dump.rdb
[root@bogon redis]# ll
总用量 48
drwxr-xr-x. 2 root root   134 3月  31 20:51 bin
-rw-r--r--. 1 root root 46689 4月   1 11:16 redis.conf
[root@bogon redis]# bin/redis-server redis.conf 
[root@bogon redis]# bin/redis-cli
127.0.0.1:6379> keys *
(empty list or set)

 

b.弄点数据,在重启redis,这时候启动过程会进程rdb check验证 然后加载redis目录下rdb文件;加载数据:
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set test1 aa
OK
127.0.0.1:6379> set test2 bb
OK
127.0.0.1:6379> shutdown save
not connected> exit
[root@bogon redis]# ll
总用量 52
drwxr-xr-x. 2 root root   134 3月  31 20:51 bin
-rw-r--r--. 1 root root   102 4月   1 11:24 dump.rdb
-rw-r--r--. 1 root root 46689 4月   1 11:16 redis.conf
[root@bogon redis]# bin/redis-server redis.conf 
[root@bogon redis]# bin/redis-cli
127.0.0.1:6379> keys *
1) "test1"
2) "test2"

说明是数据加载进来了;

 

c.把dump.rdb剪切到/root/下面,再重启redis,发现数据没了:

[root@bogon redis]# ll
总用量 52
drwxr-xr-x. 2 root root   134 3月  31 20:51 bin
-rw-r--r--. 1 root root   102 4月   1 11:29 dump.rdb
-rw-r--r--. 1 root root 46689 4月   1 11:16 redis.conf
[root@bogon redis]# mv dump.rdb /root/
[root@bogon redis]# cd /root/
[root@bogon ~]# ll
总用量 1528
-rw-------. 1 root root    1269 3月  31 23:56 anaconda-ks.cfg
-rw-r--r--. 1 root root     102 4月   1 11:29 dump.rdb
drwxrwxr-x. 6 root root    4096 7月  28 2017 redis-3.2.10
-rw-r--r--. 1 root root 1550261 7月  29 2017 redis-3.2.10.tar.gz
[root@bogon ~]# cd /usr/local/redis/
[root@bogon redis]# bin/redis-server redis.conf 
[root@bogon redis]# bin/redis-cli 
127.0.0.1:6379> keys *
(empty list or set)

d.恢复数据的话 我们只需要把备份文件搞到redis下即可,再把/root/dump.rdb拷贝到redis目录下,在启动,发现原来的数据恢复了:

[root@bogon redis]# ll
总用量 48
drwxr-xr-x. 2 root root   134 3月  31 20:51 bin
-rw-r--r--. 1 root root 46689 4月   1 11:16 redis.conf
[root@bogon redis]# mv /root/dump.rdb /usr/local/redis/
[root@bogon redis]# ll
总用量 52
drwxr-xr-x. 2 root root   134 3月  31 20:51 bin
-rw-r--r--. 1 root root   102 4月   1 11:29 dump.rdb
-rw-r--r--. 1 root root 46689 4月   1 11:16 redis.conf
[root@bogon redis]# bin/redis-sever redis.conf 
-bash: bin/redis-sever: 没有那个文件或目录
[root@bogon redis]# bin/redis-server redis.conf 
[root@bogon redis]# bin/redis-cli
127.0.0.1:6379> keys *
1) "test2"
2) "test1"

这时候 数据就有了 这就是恢复过程;

 

总结下

平时我们可以定期把rdb文件备份到指定地方 需要恢复的时候 直接把rdb搞到redis下即可;

 

转载于:https://www.cnblogs.com/tenWood/p/8686074.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值