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
相关推荐
heart000_119 分钟前
MySQL事务与锁机制详解:确保数据一致性的关键【MySQL系列】
数据库·mysql
一眼青苔24 分钟前
MySQL 如何判断某个表中是否存在某个字段
数据库·mysql
西柚小萌新1 小时前
【大模型:知识图谱】--3.py2neo连接图数据库neo4j
数据库·知识图谱·neo4j
wangfenglei1234561 小时前
mybatis打印完整的SQL,p6spy
数据库·sql·mybatis
__风__1 小时前
PostgreSQL ERROR: out of shared memory处理
数据库·postgresql
占星安啦1 小时前
一个html实现数据库自定义查询
java·前端·javascript·数据库·动态查询
天空之城夢主2 小时前
MySQL 全量、增量备份与恢复
数据库·mysql·oracle
Elastic 中国社区官方博客2 小时前
连接关键点:使用 ES|QL 联接实现更丰富的可观测性洞察
大数据·数据库·sql·elasticsearch·搜索引擎·全文检索
元闰子2 小时前
AI Agent需要什么样的数据库?
数据库·人工智能·后端
什么都想学的阿超2 小时前
【PostgreSQL 02】PostgreSQL数据类型革命:JSON、数组与地理信息让你的应用飞起来
数据库·postgresql·json