Redis 持久化存储

一、简介

1、RDB

redis默认的持久化存储方式,每隔一段时间将内存中的数据写入磁盘中。有手动触发和自动出发两种触发方式。

2、AOF

AOF持久化将被执行的写命令记录到AOF文件的末尾,来记录数据发生的变化。Redis启动时,读取AOF文件中的命令并在内存中重新执行,从而恢复数据。

3、区别

|-------|------------------------------------------------------------------|---------------------|
| 持久化技术 | 优点 | 缺点 |
| RDB | 1、拥有相同数据集时,相比AOF持久化所占用磁盘空间更少 2、使用单独的子进程进行持久化存储,主进程不进行其它IO操作,更为高效 | 1、隔一段时间进行持久化,数据安全性差 |
| AOF | 1、通过记录写命令的方式进行持久化,即使发生异常,也可以通过AOF文件恢复数据,安全性更高 | 1、占用磁盘空间大 2、恢复数据慢 |

二、配置

1、RDB
1.1 工作模式

(1)手动触发

由主进程执行save命令,执行过程中会阻塞所有用户请求,直至执行完成。

bash 复制代码
192.168.56.136:6379> save
OK

(2)自动触发

bgsave。当内存增长到指定值或指定百分比时,自动触发bgsave。主进程调用fork函数,派生出子进程,进行持久化存储,主进程只负责处理客户请求。数据会先存储到临时文件,当持久化处理完后,用临时文件替换上次持久化的文件dump.rdb。

1.2 配置
bash 复制代码
# rdb文件存放目录
dir /usr/local/redis/
# rdb文件名
dbfilename dump.rdb
# 是否压缩
rdbcompression yes
# 是否检查备份文件完整性
rdbchecksum yes
# 当磁盘空间满时,是否停止redis写操作
stop-writes-on-bgsave-error yes
# 备份策略
# 每隔1分钟,写1000次
save 60 1000
1.3 禁用RDB配置
bash 复制代码
# 禁用RDB
save ""
2、AOF
2.1 工作模式

AOF持久化以日志的形式记录写操作,当服务器宕机重启或服务重启后,会按顺序逐行读取日志来重构数据库并恢复数据。

一般都是和RDB共同使用,不单独使用。

2.2 配置
bash 复制代码
# 开启AOF持久化
appendonly yes

# 工作目录位置
dir /usr/local/redis/

# AOF文件名
# appendonly.aof.1.base.rdb作为基文件
# appendonly.aof.1.incr.of,appendonly.aof.2.incr.of作为增量文件
# appendonly.aof.manifest作为清单文件
appendfilename "appendonly.aof"

# AOF文件存放目录
appenddirname "appendonlydir"

# AOF fsync策略
# 默认everysec,每秒写入一次
# no:只操作系统需要的时候写入,由操作系统操控。速度快,安全性差
# always: 有写入操作就追加到AOF文件中。降低速度,安全性高
appendfsync everysec

# 重写期间是否执行fsync操作
# 默认no,执行fsync。安全性更高,但是影响性能
# yes,不执行fsync。性能更高,但是会丢失数据,最多30秒的数据
no-appendfsync-on-rewrite no

# AOF重写规则
# 当AOF文件超过上次重写文件的百分比(默认100%),或者超过64M
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# 是否允许redis在加载aof文件过程中,遇到文件末尾截断或损坏,仍继续加载其它部分
# 默认 yes。允许忽略错误,继续加载。
# no。不允许。每次重启前需要执行 redis check AOF 命令,修复AOF文件
aof-load-truncated yes

# 是否开启RDB AOF混合模式
# 默认yes,开启混合模式。重写时,将持久化数据以RDB格式写入到AOF文件开头,后续的数据以AOF格式追加到末尾
# no,不开启
aof-use-rdb-preamble yes

# 是否在AOF日志文件记录时间戳
# 默认 no,不开启。
# yes,开启。对性能的影响微不足道,会占用更多的磁盘空间,但是可以提供更精确的数据恢复时间
aof-timestamp-enabled no
相关推荐
一只小bit17 分钟前
MySQL表的操作:创建—修改—删除流程解析
数据库·mysql·oracle
做运维的阿瑞19 分钟前
PostgreSQL 从入门到精通:Windows 环境下安装与使用指南
数据库·windows·postgresql
学编程的小鬼20 分钟前
MySQL的快速入门
数据库·mysql
_Power_Y20 分钟前
MySql复习及面试题学习
数据库·学习·mysql
学习编程的Kitty23 分钟前
MySQL——数据类型和表的操作
数据库·mysql
程序新视界1 小时前
MySQL中,日期、时间与时间戳三种数据类型的区别
数据库·后端·mysql
lang201509281 小时前
MySQL 8.0性能优化终极指南
数据库·mysql·性能优化
Elastic 中国社区官方博客1 小时前
在 Elasticsearch 中改进 Agentic AI 工具的实验
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
豆沙沙包?1 小时前
2025年--Lc172--H178 .分数排名(SQL)--Java版
数据库·sql
yzx9910132 小时前
数据库完整指南:从基础到 Django 集成
数据库·python·django