redis的持久化使用

来自文章集合:一文带你搞懂redis使用过程(持续更新中)

redis如何使用持久化?

redis通过RDB和AOF来实现数据的持久化。RDB做镜像全量持久化,AOF做增量持久化。

什么是RDB?

RDB是一种快照持久化文件,它定期将redis数据的快照保存到磁盘的二进制文件中,这个快照包含redis某个时间点的完整状态,包括所有key、值和数据结构。RDB是一个紧凑的二进制文件,很适合用来进行数据备份和恢复。

RDB优缺点

优点:

  • 高性能,RDB需要定期进行备份,不需要每次写操作进行磁盘写入
  • 适用于灾难恢复:RDB文件对灾难恢复十分有用,因为他可以快速恢复到某个时间点的完整状态

缺点:

  • 可能会造成数据丢失;RDB是周期性进行备份更新,如果redis在生成快照(备份)之间崩溃,会丢失最后一次快照之后的所有写操作
  • 不适合实时备份;RDB生成快照的期间,会导致redis某个瞬间性能下降、阻塞
  • 不具有可读性;RDB生成二进制文件,不容易查看和分析

RDB使用

redis文件夹面有一个redis.windows.conf文件,在里面可搜索到下面相关配置,根据自身需求,可进行rdb配置的修改。

bash 复制代码
#   启动rdb持久化
save 900 1  # 900秒内,如果至少有一个键被修改,则执行快照
save 300 10 # 在300秒内,如果至少有10个键被修改,则执行快照
save 60 10000   # 在60秒内,如果至少有10000个键被修改,则执行快照

什么是AOF?

AOF是一种追加日志方式的持久化文件,每次写操作都会追加aof文件的末尾,以记录操作的顺序和详细信息。当redis重启时,会重新执行aof文件中的写操作,来恢复redis数据

AOF的优缺点

优点:

  • 数据安全:aof持久化 记录 每次写操作的顺序和详细信息,减少数据丢失的风险
  • 实时备份:aof持久化可以每次写操作都记录操作,这意味着数据可以近乎于实时的存到磁盘,适用于实时备份
  • 可读性:AOF文件 是一个文本文件,容易查看和分析

缺点:

  • 性能问题,aof持久化需要记录每一个写操作,在高写入负债下,性能回下降
  • 文件体积:AOF文件一般比RDB文件大,因为AOF持久化文件包含每个写操作的详细信息
  • 恢复时间:AOF文件在恢复时可能比RDB操作要慢,因为它需要执行每一个写操作

AOF的使用

redis文件夹面有一个redis.windows.conf文件,在里面可搜索到下面相关配置,根据自身需求,可进行aof配置的修改。

bash 复制代码
appendonly yes  #  开启AOF,默认为关闭
appendfilename "appendonly.aof"	# 指定aof文件的名称

#	下面aof记录写操作的频率三个设置

#   默认,每次写操作都进行磁盘写入,高写入频率会影响性能,因为是同步操作
appendfsync always	

#   每秒将累计的写操作进行磁盘写入
appendfsync everysec

#   不执行显式的同步操作。而是依赖操作系统来决定何时将数据刷写到AOF文件。这是性能最高的选项,因为Redis不需要等待同步操作完成。但也是最不安全的选项,因为操作系统可能在Redis认为数据已经持久化时丢失数据。
appendfsync no


#	配置AOF重写
auto-aof-rewrite-percentage 100 #   设置aof文件大小达到原始aof文件大小的100%触发重写
auto-aof-rewrite-min-size 64mb  #设置最小的aof文件大小为64mb

总结

因为RDB数据备份之间会消耗较长时间,不够实时,在停机的时候可能会导致大量数据丢失,所以需要AOF来配置使用。在redis重启时,会使用RDB文件重新构建内存,将redis恢复到最近时间点的状态,在使用AOF文件重新执行写操作来将数据恢复到服务器停机前的状态。

引申

如果机器突然断电会怎么样?

这种情况下取决于AOF的sync设置,如果是always,每次写操作都会执行磁盘写入,那么就不会丢失数据,如果设置eveysec,1秒同步一次,那么最高只会丢失一秒数据。


RDB的原理是什么,是如何备份的?

Redis在生成RDB文件时会使用类似于UNIX的fork系统调用来创建一个子进程。这个子进程是父进程的复制,包括内存中的数据。因此,在生成RDB文件之前,子进程和父进程的数据是一致的 子进程使用copy on write(写时复制的技术:子进程开始RDB生成过程中,会创建内存的副本,并在副本上执行操作)进行数据写入,父进程继续为客户端提供读写服务。

相关推荐
欧恩意6 小时前
【Tools】Java反汇编工具推荐
java·汇编
苍何6 小时前
字节发力,豆包大模型2.0 震撼来袭(附 Trae 实测)
后端
苍何6 小时前
不会剪辑的人,开始用 AI 批量出爆款了
后端
苍何6 小时前
百度 APP 正式接入 OpenClaw,所有人限时免费!
后端
寻星探路6 小时前
【JVM 终极通关指南】万字长文从底层到实战全维度深度拆解 Java 虚拟机
java·开发语言·jvm·人工智能·python·算法·ai
lbb 小魔仙6 小时前
【Java】Java 实战项目:手把手教你写一个电商订单系统
android·java·python
星河耀银海6 小时前
Java安全开发实战:从代码防护到架构安全
java·安全·架构
青云交6 小时前
Java 大视界 -- 基于 Java 的大数据可视化在城市水资源管理与节水策略制定中的应用
java·java 大数据·java 大数据可视化·城市水资源管理·spark 数据清洗·echarts 热力图·管网漏损控制
紫陌涵光7 小时前
112. 路径总和
java·前端·算法
workflower7 小时前
多变量时间序列预测
java·hadoop·nosql·需求分析·big data·结对编程