|NO.Z.00020|——————————|BigDataEnd|——|Hadoop&Redis.V02|——|Redis.v02|RDB机制|

一、RDB
### --- RDB

~~~     RDB(Redis DataBase),是redis默认的存储方式,
~~~     RDB方式是通过快照( snapshotting )完成的。
~~~     这一刻的数据:不关注过程
### --- 触发快照的方式

~~~     符合自定义配置的快照规则
~~~     执行save或者bgsave命令
~~~     执行flushall命令
~~~     执行主从复制操作 (第一次)
### --- 配置参数定期执行
~~~     在redis.conf中配置:save 多少秒内 数据变了多少
~~~     漏斗设计 提供性能

[root@linux123 ~]# vim /opt/yanqi/servers/redis/bin/redis.conf
save ""            # 不使用RDB存储 不能主从
save 900 1         # 表示15分钟(900秒钟)内至少1个键被更改则进行快照。
save 300 10        # 表示5分钟(300秒)内至少10个键被更改则进行快照。
save 60 10000      # 表示1分钟内至少10000个键被更改则进行快照。
### --- 命令显式触发:在客户端输入bgsave命令。

127.0.0.1:6379> bgsave
Background saving started
二、RDB执行流程(原理)
### --- RDB执行流程(原理)

~~~     # Redis父进程首先判断:
~~~     当前是否在执行save,或bgsave/bgrewriteaof(aof文件重写命令)的子进程,
~~~     如果在执行则bgsave命令直接返回。
~~~     # 父进程执行fork(调用OS函数复制主进程)
~~~     操作创建子进程,这个复制过程中父进程是阻塞的,Redis不能执行来自客户端的任何命令。
~~~     # 父进程fork后,
~~~     bgsave命令返回”Background saving started”信息并不再阻塞父进程,并可以响应其他命令。
~~~     # 子进程创建RDB文件,
~~~     根据父进程内存快照生成临时快照文件,完成后对原有文件进行原子替换。(RDB始终完整)
~~~     # 子进程发送信号给父进程表示完成,
~~~     父进程更新统计信息。
~~~     # 父进程fork子进程后,
~~~     继续工作。
三、RDB文件结构
### --- RDB文件结构

~~~     头部5字节固定为“REDIS”字符串
~~~     4字节“RDB”版本号(不是Redis版本号),当前为9,填充后为0009
~~~     辅助字段,以key-value的形式
字段名 字段值 字段名 字段值
redis-ver 5.0.5 aof-preamble 是否开启aof
redis-bits 64/32 repl-stream-db 主从复制
ctime 当前时间戳 repl-id 主从复制
used-mem 使用内存 repl-offset 主从复制
### --- 字段说明

~~~     存储数据库号码
~~~     字典大小
~~~     过期key
~~~     主要数据,以key-value的形式存储
~~~     结束标志
~~~     校验和,就是看文件是否损坏,或者是否被修改。
四、可以用winhex打开dump.rdb文件查看。
### --- RDB的优缺点

~~~     # 优点
~~~     RDB是二进制压缩文件,占用空间小,便于传输(传给slaver)
~~~     主进程fork子进程,可以最大化Redis性能,主进程不能太大,
~~~     Redis的数据量不能太大,复制过程中主进程阻塞
~~~     # 缺点
~~~     不保证数据完整性,会丢失最后一次快照以后更改的所有数据

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

posted on   yanqi_vip  阅读(8)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示