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

redis的rdb快照持久化

2016-05-01 18:58 501 查看
rdb工作原理:

每隔N分钟或者N次写操作以后,从内存dump数据形rdb文件,压缩放在备份的目录下面。

配置rdb的配置,在redis.conf配置



测试rdb的功能:

1为了测试简单

改为

save 900 1

save 300 10

save 60 100

1分钟执行100条命令,就会生成rdb文件

2在执行测试命令之前,先往redis设置一个key-value对

set site www.baidu.com

3用redis自带的命令来测试,执行120条命令



4 执行完毕以后会发现在当前目录下面生成rdb文件。



5 设置第二个键值对set name wangli

6重启redis,连接客户端,会发现site的键值对在redis中,但是name的键值对消失了,这是因为在重启的时候,会自动导入rdb文件到redis中,由于1分钟执行100次才会生成rdb文件,所以在执行测试命令之前 设置的site键值对,已经生成在rdb文件中,可是后来设置的name的键值对仅仅在120次命令以后才设置,(在100次的时候会生成一次rdb文件,剩下的20次还不够资格再一次生成rdb文件)还没有到导入rdb的条件,所以rdb里面没有这个键值对。图如下



7 rdb持久化的优缺点:

优点:由于是一整块快照,恢复速度非常快。

缺点:在两个保存点之间,断电会丢失n分钟数据,出于对持久化更精细的需求,redis推出了aof方式持久化。

RDB最重要的两个过程是rdbSave和rdbLoad

触发rdbSave过程,主要有4种方式:

1. SAVE命令

2. BGSAVE命令

3. master接收到slave发来的sync命令

4. 定时save(配置文件中制定)

第一种情况,Redis保存RDB文件是在主进程中进行,所以在这其间,Redis无法响应客户端请求(再次强调:Redis是单线程Server);第二种情况,Redis fork出一个子进程,然后在子进程中进行rdbSave,因此也就不会阻塞主进程对客户端请求的处理;第三种情况和第四种情况同第二种情况,也是在子进程中进行;

触发rdbLoad过程,主要有两种方式:

1. Redis启动时候的初始化;

2. slave接收到master发来的RDB文件;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: