Redis持久化

本文深入探讨Redis的持久化机制,包括RDB(快照)和AOF(Append Only File)。RDB通过创建数据快照保存到磁盘,适合全量恢复;AOF则记录每次写操作,保证实时性,支持不同同步策略。AOF重写用于减少文件体积。Redis在特定条件下自动或手动触发这两种持久化,确保数据安全。
摘要由CSDN通过智能技术生成

RDB

RDB持久化是把当前进程数据生成快照并保存到磁盘的过程

触发机制

  • 手动触发

    save和bgsave命令

  • 自动触发

    1. 配置文件中的save m n 表示m秒内存在n次修改,自动触发bgsave
    2. 如果从节点全量复制, 主节点自动执行bgsave生成rdb文件,并发送给从节点
    3. 在没有开启aof时,执行shutdown命令时,自动执行bgsave

save命令

阻塞当前Redis服务器,直到RDB过程完成为止

bgsave命令

bgsave

AOF

AOF(append only file)持久化: 以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中的命令达到恢复数据的目的。

AOF默认不开启

启用aof需配置appendonly yes

AOF流程

  1. 命令写入:所有写入命令会追加到aof_buf缓冲区中
  2. 文件同步:根据对应的策略同步缓冲到磁盘
  3. 重写机制:定期对AOF文件进行重写

命令写入

AOF命令写入的内容直接是文本协议格式

文件同步

同步策略

appendfsync always 每次写入都立刻记入日志, 性能较差但数据完整性比较好

appendfsync everysec每秒记入日志一次, 如果宕机, 最后一秒的数据可能丢失【建议配置,也是默认配置】

appendfsync no 不主动进行同步, 把同步时机交给操作系统

重写机制

为什么需要重写?

AOF采用文件追加方式, 文件会越来越大;为了避免出现此种情况, 新增了重写机制, 当AOF文件超过所设定的阀值时, redis 会启动内容压缩, 只保留恢复数据的最小指令集

重写后文件为什么变小?

  1. 进程内已经超时的数据不再写入文件
  2. 旧的AOF文件含有无效命令
  3. 多条命令可以合并为一条命令

触发重写的机制

  • 手动触发

    命令bgrewriteaof

  • 自动触发

    自动触发时机 = aof_current_size > auto-aof-rewrite-min-size && (aof_current_size - aof_base_size) / aof_base_size >= auto-aof-rewrite-percentage

image-20220504203657933

比较

文件大小:rdb为二进制形式,文件更小

加载恢复快慢:rdb方式恢复数据更快

实时持久化:aof更好的保证实时性,更安全

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值