Redis持久化技术详解

redis持久化

引出

Redis 是一个内存数据库,所以其运行效率非常高。但也存在一个问题:内存中的数据是不持久的,若主机宕机或 Redis 关机重启,则内存中的数据全部丢失。当然,这是不允许的。

Redis 具有持久化功能,其会按照设置以快照或操作日志的形式将数据持久化到磁盘。 根据持久化使用技术的不同,Redis 的持久化分为两种:RDB 与 AOF

需要注意的是,RDB是默认持久化方式,但 Redis 允许 RDB 与 AOF 两种持久化技术同时开启。不过如果同时存在两种持久化方式,会默认采取AOF的方式,AOF持久化方式的优先级更高

无论是哪种持久化方式,需要配置相关信息时,都是在redis.conf文件中进行操作。

RDB持久化

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

持久化的执行

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

1. 手动 save 命令

通过在 redis-cli 客户端中执行 save 命令可立即进行一次持久化保存。save 命令在执行期 间会阻塞 redis-server 进程,直至持久化过程完毕。而在 redis-server 进程阻塞期间,Redis 不能处理任何读写请求,无法对外提供服务。

在这里插入图片描述

2. 手动 bgsave 命令

通过在 redis-cli 客户端中执行 bgsave 命令可立即进行一次持久化保存。不同于 save 命 令的是,正如该命令的名称一样,background save,后台运行 save。bgsave 命令会使服务器 进程 redis-server 生成一个子进程,由该子进程负责完成保存过程。在子进程进行保存过程 中,不会阻塞 redis-server 进程对客户端读写请求的处理

在这里插入图片描述

3. 自动条件触发(重点)

自动条件触发的本质仍是 bgsave 命令的执行。只不过是用户通过在配置文件中做相应的设置后,Redis 会根据设置信息自动调用 bgsave 命令执行。

save(几秒内几次写操作快照)
语法格式:
    save  时间段  操作次数

该配置用于设置快照的自动保存触发条件,即 save point,保存点。

该触发条件是在指 定时间段内发生了指定次数的写操作。

默认情况下持久化条件为 save 3600 1 300 100 60 10000。

​ 其等价于以下三条:

​ save 3600 1 # 在 3600 秒(1 小时)内发生 1 次写操作

​ save 300 100 # 在 300 秒(5 分钟)内发生 100 次写操作

​ save 60 10000 # 在 60 秒(1 分钟)内发生 1 万次写操作

如果不启用 RDB 持久化,只需设置 save 的参数为空串即可:save “ ”

dbfilename
语法格式:
    dbfilename 文件名

指定 RDB 文件的默认名称,默认为 dump.rdb。

AOF 持久化

AOF,Append Only File,是指 Redis 将每一次的写操作都以日志的形式记录到一个 AOF 文件中的持久化技术。当需要恢复内存数据时,将这些写操作重新执行一次,便会恢复到之前的内存数据状态。

持久化的执行

1. 开启–appendonly

默认情况下 AOF 持久化是没有开启的,通过修改配置文件中的 appendonly 属性为 yes 可以开启。

image-20240722144236289

2. 默认文件名–appendfilename

在这里插入图片描述

Redis 7 在这里发生了重大变化。原来只有一个 appendonly.aof 文件,现在具有了三类多个 文件:

 基本文件:可以是 RDF 格式也可以是 AOF 格式。其存放的内容是由 RDB 转为 AOF 当 时内存的快照数据。该文件可以有多个。

 增量文件:以操作日志形式记录转为 AOF 后的写入操作。该文件可以有多个。

 清单文件:用于维护 AOF 文件的创建顺序,保障激活时的应用顺序。该文件只有一个。

3. AOF 文件目录–appenddirname

在这里插入图片描述

为了方便管理,可以专门为 AOF 持久化文件指定存放目录。目录名由 appenddirname 属性指定,存放在 redis.conf 配置文件的 dir 属性指定的目录,默认为 Redis 安装目录。

4. 开启混合持久化

在这里插入图片描述

对于基本文件可以是 RDF 格式也可以是 AOF 格式。通过 aof-use-rdb-preamble 属性可以 选择。其默认值为 yes,即默认 AOF 持久化的基本文件为 rdb 格式文件,也就是默认采用混合式持久化。

AOF文件–appendonly.aof.1.incr.aof

在这里插入图片描述

两种方式的比较

RDB 优势RDB 不足AOF 优势AOF 不足
RDB 文件较小数据安全性较差数据安全性高AOF 文件较大
数据恢复较快写时复制会降低性能AOF 文件可读性强写操作会影响性能
RDB 文件可读性较差数据恢复较慢

使用场景

 官方推荐使用 RDB 与 AOF 混合式持久化。

 若对数据安全性要求不高,则推荐使用纯 RDB 持久化方式。

 不推荐使用纯 AOF 持久化方式。

 若 Redis 仅用于缓存,则无需使用任何持久化技术。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值