Redis之持久化存储
Redis持久化解决方案
RDB
RDB存储的重点在于数据本身,将数据持久化存入后缀为.rdb的文件中,即快照,每隔一段时间记录新的数据,像快速拍照一样,每次拍完放在一边,用的时候快速恢复。所以叫快照
AOF
AOF在于记录操作过程,将指令以日志的形式保存存储操作过程,存储格式复杂
----------------------------------------------------------------------------------------------------------------------------------------
Redis持久化之RDB
RDB的启动方式——save指令 手动执行保存
工作原理
Redis是单线程,所有命令都会在类似队列中排好队,不建议使用save指令,因为save指令的执行会阻塞当前Redis服务器,直到当前RDB过程完成位置,有可能会造成长时间阻塞,线上环境不建议使用
后台执行 -----命令bgsave 作用:手动启动后台保存操作,但不是立即执行
开启后自动保存
注:
1.bgsave命令是针对save阻塞问题做的优化。Redis内部所有涉及到RDB操作都采用bgsave的方式,save命令可以放弃使用,注意bgsave持久化的时候是持久化bgsave命令之前的数据
2.
4.
RDB优缺点
-
优点
1.RDB是一个紧凑压缩的二进制文件,存储效率较高
2.RDB内部存储的是redis在某个时间点的数据快照,非常适合用于数据备份,全量复制等场景
3.RDB恢复数据的速度要比AOF快很多
应用: 服务器中每X小时执行bgsave备份,并将RDB文件拷贝到远程机器中,用于灾难恢复
-
缺点
1.RDB方式无论是执行指令还是利用配置,无法做到实时持久化,具体较大的可能性丢失数据
2.bgsave指令每次运行要执行fork操作创建子进程,要牺牲掉一些性能
3.Redis的众多版本中未进行RDB文件格式的版本统一,有可能出现个版本服务之间数据格式无法兼容现象(比如3.x和4.x的版本)
-----------------------------------------------------------------------------------------------------------------
Redis持久化之AOF
AOF
AOF持久化:以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中命令达到恢复数据的目的。与RDB相比可以简单描述为改为记录数据产生的过程
AOF写数据的三种策略
-
1.always
与rdb的手动save操作相同,每次写入操作均同步到AOF文件中,数据零误差,性能较低
-
2.everysec
每秒将缓冲区中的指令同步到AOF文件中,数据准确性高,性能较高,再系统突然宕机的情况下最多丢失1秒内的数据
-
3.no(系统控制)
由操作系统每次同步到AOF文件的周期,整体过程不可控
开启功能
1.配置
appendonly yes|no
作用:是否开启APF持久化功能,默认为不开启
2.配置
appendfsync always|everysec|no
作用:AOF持久化指令的方式
AOF持久化数据的缺点
将同样一个数据的若干个命令执行结果转换为最终结果数据对应的指令进行记录
AOF重写作用:
降低磁盘占用量,提高磁盘利用率
降低数据恢复时间,提高数据恢复效率
AOF重写规则:
1.超时的数据不再写入文件
忽略无效指令,重写时使用进程内数据直接生成,这样新的AOF文件只保留最终数据的写入命令 如del key1,hdel key2,srem key3,set key 222等
对统一数据的多条命令合并为一条命令 如 lpush list1 a ,lpush list1 b,lpush list1 c可以转化为lpush list1 a b c
为防止数据量过大造成客户端缓冲区溢出,对list,set,hash,set等类型,每条指令最多写入64个元素
AOF重写方式:
手动重写:Bgrewriteaof (类似rdb执行一条指令就重写)
自动重写:auto-aof-rewrite-min-size size auto-aof-rewrite-percentage percentage
==========================================
RDB-AOF混合持久化
4.0开始允许使用RDB-AOF混合持久化的方式
持久化开关开启后,AOF文件的前半段为RDB文件,后半段为AOF,且文件开头带有REDIS
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!