东坑镇做网站,深圳有什么好玩的,盘锦做网站建设的,网上Redis持久化的三种方式(RDB、AOF和混合) 目录 Redis持久化的三种方式(RDB、AOF和混合)介绍RDB示例1.配置文件2.触发 RDB 快照保存3.验证 AOF示例1.配置文件2.校验 混合型持久化存储配置文件 介绍
Redis数据主要存储与内存中#xff0c;因此如果服务器意外重启、宕机、崩溃因此如果服务器意外重启、宕机、崩溃那么数据就会全部丢失。而Redis持久化的意义就是为了当发生这些灾难时找回数据。
Redis 提供了两种主要的持久化方式RDBRedis Database和 AOFAppend Only File
RDBRedis Database RDB 持久化通过创建一个名为 dump.rdb 的二进制文件来保存 Redis 数据库在某个时间点的快照。在 Redis 重启时会加载这个文件来恢复数据。 AOFAppend Only File AOF 持久化通过记录服务器接收到的每一个写操作命令如 set、del 等以追加的方式写入到一个 AOF 文件中。Redis 重启时会通过重新执行 AOF 文件中的命令来恢复数据。
RDB示例
1.配置文件
在redis.conf中修改rdb备份文件的名称默认为dump.rdb
dbfilename dump.rdbsave修改触发快照条件
save 900 1 # 900 秒内至少有 1 个键被改变
save 300 10 # 300 秒内至少有 10 个键被改变
save 60 10000 # 60 秒内至少有 10000 个键被改变dir设置 RDB 文件的存储目录默认为 Redis 服务器的当前工作目录
dir /data示例
dbfilename dump.rdb
save 900 1
dir /data2.触发 RDB 快照保存
如果没有save触发条件也可以自己手动触发快照保存
linux环境
redis-cli SAVEpython环境
import redis # 连接到Redis服务器
r redis.Redis(hostlocalhost, port6379, db0) r.bgsave() # 触发RDB快照的保存 3.验证
这里我们设置了自动保存快照并添加两个数据 然后重启服务器再次查询keys *数据还在 RDB优势 二进制存储速度极快磁盘空间占用小在生成RDB快照时Redis会fork出一个子进程来负责写入磁盘工作对性能的影响小 RDB劣势 实时性低需要等待save有数据丢失风险如果在save存储间隔期间宕机则无法存储到那期间的数据数据过大时fork过程会克隆一份数据相当于内存中突然出现了两倍的数据可能会影响性能
AOF示例
AOF 日志存储的是 Redis 服务器的顺序指令序列AOF 日志只记录对内存进行修改的指令记录
1.配置文件 appendonly是否开启AOF appendfilenameAOF文件名。默认值为appendonly.aof appendfsyncAOF持久化策略的配置。有三个选项 no不执行fsync由操作系统保证数据同步到磁盘速度最快但不太安全。 always每次写入都执行fsync以保证数据同步到磁盘效率很低。 everysec每秒执行一次fsync这是默认选项兼顾了安全性和效率。但可能会导致最多丢失1秒的数据。
示例
# 开启AOF持久化功能
appendonly yes # AOF文件的名称
appendfilename appendonly.aof # 配置AOF持久化的fsync策略
# 使用everysec可以实现性能和数据安全性的平衡,每秒fsync一次
appendfsync everysec # AOF文件自动重写的触发条件
# 设置为100,表示当AOF文件大小是上一次重写后的AOF文件大小的100%时,触发重写
auto-aof-rewrite-percentage 100 # 设置触发AOF重写的最小文件大小
# 避免AOF文件很小的时候触发重写,减少不必要的重写操作
auto-aof-rewrite-min-size 64mb # 配置在启动加载AOF文件时对不完整文件的处理
# 设置为yes,允许加载不完整的AOF文件,提高数据恢复的灵活性
aof-load-truncated yes # 启用增量式fsync,减少磁盘I/O操作
aof-rewrite-incremental-fsync yes # 在AOF重写期间,使用备用的子进程进行写操作,减少对主进程的影响
# 注意: 在Redis 4.0及以上版本中,这通常是默认行为
# aof-rewrite-use-rdb-preamble yes # 根据Redis版本和具体需求选择是否启用混合持久化 # 配置文件的目录,AOF文件会存储在这个目录下
dir /data # 其他可能的配置项,根据实际需求进行配置
# 例如,关于AOF重写期间是否禁止appendfsync
# no-appendfsync-on-rewrite no2.校验
随便搞点数据进去set k 123然后打开appendonly.aof 混合型持久化存储
混合持久化在AOF重写时将压缩的RDB数据置于AOF文件首后续追加AOF命令以结合两者优势加速恢复并减少数据丢失风险
它继承了RDB和AOF优点
快速恢复RDB数据完整AOF
配置文件
首先启用 AOF 持久化并设置 aof-use-rdb-preamble 为 yesRedis 5.0 及以上版本中默认启用
appendonly yes
aof-use-rdb-preamble yes当 AOF 文件增长到一定大小时Redis 会自动触发 AOF 重写过程。在重写过程中Redis 会首先创建一个新的 AOF 文件并将当前的内存快照RDB 格式以二进制压缩形式写入到这个新文件的开头
手动触发AOF重写
redis-cli BGREWRITEAOF