ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

07 Redis之持久化(RDB+AOF)

07 Redis之持久化(RDB+AOF)

4 Redis持久化

Redis 是一个内存数据库,然而内存中的数据是不持久的,若主机宕机或 Redis 关机重启,则内存中的数据全部丢失。

当然,这是不允许的。Redis 具有持久化功能,其会按照设置以快照或操作日志的形式将数据持久化到磁盘。

4.1 持久化基本原理

在这里插入图片描述
Redis 持久化也称为钝化,是指将内存中数据库的状态描述信息保存到磁盘中。
只不过是不同的持久化技术,对数据的状态描述信息是不同的,生成的持久化文件也是不同的。但它们的作用都是相同的:避免数据意外丢失。

通过手动方式,或自动定时方式,或自动条件触发方式,将内存中数据库的状态描述信息写入到指定的持久化文件中。当系统重新启动时,自动加载持久化文件,并根据文件中数据库状态描述信息将数据恢复到内存中,这个数据恢复过程也称为激活。

这个钝化与激活的过程就是 Redis 持久化的基本原理。

不过从以上分析可知,对于 Redis 单机状态下,无论是手动方式,还是定时方式或条件触发方式,都存在数据丢失问题:在尚未手动/自动保存时发生了 Redis 宕机状况,那么从上次保存到宕机期间产生的数据就会丢失。不同的持久化方式,其数据的丢失率也是不同的。

4.2 Redis默认RDB持久化

Redis默认使用RDB方式进行持久化,
即若不进行任何配置, 那么每次开机系统会自动加载Redis安装目录下的dump.rdb文件, 复原数据库到上一个记录点

同时 , 尽管RDB为Redis的默认持久化方式,但 Redis 允许 RDB 与 AOF 两种持久化技术同时开启,此时系统会优先使用 AOF 方式做持久化,即加载AOF持久化文件进行数据库复原.

在这里插入图片描述

4.3 RDB 持久化

RDB(Redis DataBase),是指将内存中某一时刻的数据快照全量写入到指定的 rdb 文件的持久化技术。
RDB 持久化默认是开启的。当 Redis 启动时会自动读取 RDB 快照文件,将数据从硬盘载入到内存,以恢复 Redis 关机前的数据库状态。

4.3.1 RDB持久化的执行

RDB 持久化的执行有三种方式:手动 SAVE 命令、手动 BGSAVE 命令,与自动条件触发。

4.3.1.1 手动SAVE命令

通过在 redis-cli 客户端中执行 SAVE 命令可立即进行一次持久化保存。

SAVE 命令在执行期间会阻塞 redis-server 进程,直至持久化过程完毕。即在执行SAVE命令的过程中 , Redis不能处理任何读写请求,无法对外提供服务。

4.3.1.2 手动BGSAVE命令
4.3.1.3 自动条件触发
4.3.1.4 查看持久化时间

4.3.2 RDB优化配置

4.3.3 RDB文件结构

4.3.4 RDB持久化过程

4.4 AOF持久化

4.4.1 AOF基础配置

返回列表