redis数据持久化

一、RDB持久化

RDB(Redis Backup File):把内存中的所有数据都记录到磁盘中,当Redis实例故障重启后,从磁盘读取快照文件,恢复数据

redis在正常停机之前会做一次持久化,但异常停机会导致数据丢失

手动命令

bash 复制代码
#使用redis主进程把内存数据写入磁盘,此操作会阻塞所有命令
save
#另起一个子进程执行rdb,避免主进程受到影响
bgsave

写在redis.conf中redis自动执行

bash 复制代码
#save 时间 key修改次数
#如果900秒内至少有1个key被修改,就拉起一个bgsave进程
save 900 1
#禁用RDB
save ""

#其他配置

#是否压缩数据文件,建议不开启,压缩会消耗cpu
rdbcompression yes
#RDB文件名称,修改名称后原名称将不会读取
dbfilename dump.rdb
#文件保存的路径目录
dir ./

bgsave执行步骤

① fork主进程得到子进程

② 子进程共享主进程的内存数据

③ 完成fork后读取内存数据并写入RDB文件

④使用新的RDB文件替换旧的RDB文件

fork采用的是copy-on-write技术

① 当主进程执行读操作时,访问共享内存

② 当主进程执行写操作时,则会拷贝一份数据,执行写操作

二、AOF持久化

AOF全称为Append Only File(追加文件),Redis处理的每一个写命令都会记录在AOF文件,可以看作是命令日志文件

bash 复制代码
#是否开启AOF,默认为no,yes表示开启
appendonly yes
#AOF文件名称
appendfilename "appendonly.aof"

#配置AOF记录的频率,有三种方式

#每执行一次写命令就立刻记录到AOF文件(性能最好,消耗最大,几乎不会丢数据)
appendfsync always
#写命令执行完先放入AOF缓冲区,然后表示每隔1秒将缓冲区数据写到AOF文件,是默认方案(性能折中,1s内如果宕机数据会丢失)
appendfsync everysec
#写命令执行完先放入AOF缓冲区,由操作系统决定何时将缓冲区内容写回磁盘
appendfsync no

AOF记录的是操作记录,RDB记录的是值

因为是记录命令,AOF文件会比RDB文件大得多,而且AOF会记录对同一个key的多次写操作,但只有最后一次写操作才有意义,通过执行bgwriteaof命令,可以让AOF文件执行重写功能,用最少的命令达到相同效果

bash 复制代码
bgrewriteaof

自动触发重写配置

bash 复制代码
#默认值100 AOF文件比上次文件增长超过多少百分比则触发重写
auto-aof-rewrite-percentage 100
#默认64mb AOF文件体积最小多大以上才触发重写
auto-aof-rewrite-min-size 64mb

三、混合持久化

在开启混合持久化的情况下,AOF 重写时会把 Redis 的持久化数据,以 RDB 的格式写入到 AOF 文件的开头,之后的数据再以 AOF 的格式化追加的文件的末尾

从AOF文件中查看到的就不是AOF标准格式的数据,因为其中混入的RDB格式的数据

redis5.0自动开启混合持久化

打开混合持久化:

bash 复制代码
#redis-cli 查询是否打开了混合持久化
config get aof-use-rdb-preamble

#1.永久设置:在redis.conf设置
aof-use-rdb-preamble yes

#2.通过命令行开启,重启后生效
config set aof-use-rdb-preamble yes
相关推荐
新鲜势力呀8 小时前
PHP 消息队列实战:从同步接口阻塞到 RabbitMQ + Redis队列 + 异步任务架构完整优化方案
redis·rabbitmq·php
麦壳饼8 小时前
深入探讨:SonnetDB 的文件格式与存储布局
数据库·sonnetdb
for_ever_love__9 小时前
Redis 持久化讲透:RDB、AOF 与混合持久化怎么选
java·数据库·redis·持久化·aof·区别·rdb
l1t9 小时前
测试bicdb 20261007提交的0.2版功能
数据库
内存漫游9 小时前
锁与死锁——数据库为什么会发生事务等待?
数据库
赛博守夜人9 小时前
跨境业务与出海合规之八:面向海外合规监管突击搜查(Dawn Raid)的信息安全应急响应(IR)与合规取证
大数据·数据库
冰暮流星9 小时前
mysql之索引创建,查看,删除
数据库·mysql
溪语流沙9 小时前
【Web全栈进阶】Alembic数据库迁移:改表结构不再删库
前端·数据库·python·elasticsearch·postgresql
杨云龙UP10 小时前
Oracle 19c 单机到单机 Active Data Guard 搭建与巡检操作手册
数据库·oracle·adg·操作指南·data guard·dg搭建
念越10 小时前
初中语数英答题与竞赛平台
java·数据库·spring boot