Redis持久化

Redis提供快照和AOF两种持久化方式,快照适用于容灾备份,但可能导致数据丢失;AOF记录所有写命令,文件体积会增长,可通过配置优化。在切换到AOF时,需先保存RDB备份,再执行AOF重写,并重启Redis。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Redis 提供了两种不同的持久化方法来将数据存储在硬盘中。
1、快照(snapshotting)它可以将存在于某一时刻的所有数据都写入硬盘里面。(适用于容灾备份)
2、只追加文件(append-only file,AOF)它会在执行写命令时,将被执行的写命令复制到硬盘里
这两种方法即可同时使用,也可以单独使用

缺点

(互补关系就不写优点了)
快照:如果系统发生崩溃,用户将丢失最近一次生成快照之后更改的所有数据。

AOF:Redis不断的将被执行的写命令记录到AOF文件里面,随着Redis不断运行,AOF文件体积也会不断增长。还有一个问题就是,Redis重启之后需要重新执行AOF文件记录的所有写命令还原数据,AOF文件过大,导致还原执行的时间可能过长(解决方法重写/压缩AOF文件,见AOF主要配置)Redis加载RDB恢复数据远远快于AOF的方式

配置文件

/etc/redis/redis.conf(Ubuntu18.04,redis4.0.9)

快照主要配置:

客户端通过发送BGSAVE命令来创建一个快照(fork一个子进程负责写入快照,父进程继续处理命令请求)
或者通过发送SAVE命令创建快照,SAVE命令在快照创建完毕前不再响应其他任何命令(不常用)

1、save 60 1000
当“60秒内有1000次写入”这个条件被满足是,Redis会自动触发BGSAVE命令,如果设置了多个save配置选项,那么任意一个save配置选项满足,就会触发一次BGSAVE命令
2、dbfilename dump.rdb
快照文件命名

AOF主要配置:

通过BGREWRITEAOF命令,移除AOF文件中的冗余命令来重写文件,工作原理和BGSAVE相似(创建子进程)

1、appendonly no
是否使用AOF持久化 yes打开
2、appendfsync everysec
AOF文件同步,选项 always、everysec、no
always 每个Redis写命令都同步写入硬盘,严重减低Redis速度(可能影响固态硬盘寿命)
everysec 每秒执行一次同步,显示地将多个写命令同步到硬盘
no 让操作系统决定何时进行同步(崩溃后丢失数据不定量,不推荐)
3、auto-aof-rewrite-percentage 100
4、auto-aof-rewrite-min-size 64mb
当AOF文件体积大于64MB并且体积比上次重写后的体积大了至少100%的时候,Redis将执行BGREWRITEAOF命令。若重写过于频繁可将auto-aof-rewrite-percentage选项配置设为100以上,可以让AOF文件体积更大些才执行重写操作,不过重启还原数据集所需时间将变长。

共享配置:

dir /var/lib/redis
快照文件和AOF文件保存位置

RDB切换为AOF的正确步骤:

由于启用AOF之后,重启Redis,默认会从aof恢复数据,就会忽略dump.rdb中的数据,造成重启之前数据丢失,
因此Redis从RDB向AOF切换的时候要使用如下步骤
  1. 配置文件启用AOF,appendonly设置为yes
  2. 执行save,把数据全部写入dump.rdb,这是一步备份操作。万一aof失败,还能从dump.rdb中把数据恢复回来
  3. 执行bgrewriteaof ,把数据写入.aof,便于以aof启动的时候加载数据
  4. 重启Redis服务器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值