《Redis设计与实现》第十章 RDB持久化

Redis是内存数据库,它将自己的数据库状态存储在内存里面,所以要提供RDB持久化功能来避免数据以为丢失。

-w612

10.1 RDB文件的创建与载入

有两个Redis命令可以用于生成RDB文件,一个是SAVE另外一个是BGSAVE,Save会阻塞进程,bgssave不会。
-w721
-w689

10.1.1 SAVE命令执行时的服务器状态

只有在服务器执行完SAVE命令、重新开始接受命令请求之后,客户端发送的命令爱会被处理。

10.1.2 BGSAVE命令执行时的服务器状态

-w704
子进程来进行持久化,与许多命令不兼容。

10.1.3 RDB文件载入时的服务器状态

载入RDB时会一直阻塞状态。

10.2 自动间隔性保存

-w554

10.2.1 设置保存条件

save 900 1
save 300 10
save 60 100000

-w552

10.2.2 diryty计数器和lastsave属性

dirty计数器记录了距离上一次成功执行save命令或者bgsave命令之后,服务器对数据库状态进行了多少次修改(写入、删除、更新等操作)。
lastSave属性是一个unix时间戳记录上次成功执行RDB持久化的时间。

-w292
-w711

10.2.3 检查保存条件是否满足

-w728

10.3 RBD文件结构

-w473
常量用大写、变量和数据用小写。

-w712

10.3.1 databases部分

一个RDB文件的databases部分可以保存任意多个非空数据库。

-w715
-w276

10.3.2 key_value_pairs部分

-w709
-w537
-w708

10.3.3 value编码

RDB文件中的每个value部分都保存了一个值对象。

1、字符串对象 2、列表对象-w403
3、集合对象
-w728
4、哈希对象
-w724

10.4 分析RDB文件

10.4.1 不包含任何键值对的rdb文件

-w741

10.4.2 包含字符串键的RDB文件

-w600

10.4.3 包含过期时间的字符串键的RDB文件

-w599
…各种二进制分析

10.5 重点回顾

  • RDB文件用于保存和还原Redis服务器的所有数据库中的所有键值对数据
  • save命令阻塞操作保存
  • bgsave用紫禁城执行保存操作
  • rdb是一个经过压缩的二进制文件,由多个部分组成
  • 不同类型的键值对,rdb文件使用不同的方式保存他们。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章