• Redis持久化-RDB和AOF


    持久化的功能: Redis是内存数据库, 数据都是存储在内存中, 为了避免进程退出导致数据的永久丢失, 需要定期将Redis中的数据以某种形式(数据或命令) 从内存保存到硬盘。 当下次Redis重启时, 利用持久化文件实现数据恢复。 除此之外, 为了进行灾难备份, 可以将持久化文件拷贝到一个远程位置。 Redis持久化分为 RDB 持久化和 AOF 持久化, 前者将当前数据保存到硬盘, 后者则是将每次执行的写命令保存到硬盘。(rdb保存的是数据,aof保存的是命令)。

    RDB持久化:

    RDB是一种快照存储持久化方式, 具体就是将Redis某一时刻的内存数据保存到硬盘的文件当中, 默认保存的文件名为dump.rdb, 而在Redis服务器启动时, 会重新加载dump.rdb文件的数据到内存当中恢复数据。 触发 RDB 持久化过程分为手动触发和自动触发。

    服务器配置自动触发

    # 默认的设置为:

    save 900 1

    save 300 10

    save 60 10000

    # 以下设置方式为关闭RDB快照功能

    save ""

    以上三项默认信息设置代表的意义是:

    • 如果900秒内有1条Key信息发生变化,则进行快照;
    • 如果300秒内有10条Key信息发生变化,则进行快照;
    • 如果60秒内有10000条Key信息发生变化,则进行快照。读者可以按照这个规则,根据自己的实际请求压力进行设置调整。
    • 其它相关配置

    # 文件名称
    dbfilename dump.rdb

    # 文件保存路径
    dir ./

    # 如果持久化出错,主进程是否停止写入
    stop-writes-on-bgsave-error yes

    # 是否压缩
    rdbcompression yes

    # 导入时是否检查
    rdbchecksum yes

    AOF持久化

     AOF(Append Only File)持久化是把每次写命令追加写入日志中,当需要恢复数据时重新执行AOF文件中的命令就可以了。AOF解决了数据持久化的实时性,也是目前主流的Redis持久化方式。

    开启 AOF 功能需要设置配置: appendonly yes, 默认不开启。 AOF 文件名通过 appendfilename 配置设置, 默认文件名是 appendonly.aof。 保存路径同RDB 持久化方式一致, 通过 dir 配置指定

     持久化配置:

    appendonly yes #启用aof持久化方式

    appendfsync always #每次收到写命令就立即强制写入磁盘, 最慢的大概只有几百的TPS, 但是保证完全的持久化, 不推荐使用

    appendfsync everysec #每秒钟强制写入磁盘一次, 在性能和持久化方面做了很好的折中, 推荐 appendfsync no #完全依赖os, 性能最好,持久化没保证, Redis不会主动调用fsync去将AOF日志内容同步到磁盘, 所以这一切就完全依赖于操作系统的调试了。 对大多数Linux操作系统, 是每30秒进行一次fsync, 将缓冲区中的数据写到磁盘上。

     

    RDB和AOF对比

    RDB的优点:

    1. RDB文件非常紧凑,节省内存空间;
    2. RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快;
    3. 适合全量备份、全量复制的场景,经常用于灾难恢复(对数据的完整性和一致性要求相对较低的场合)

    RDB的缺点:

    1. 服务器宕机时,可能会丢失部分数据;
    2. 每次保存RDB的时候,Redis都要fork出一个子进程,这个过程是阻塞的,如果数据集巨大,那阻塞的时间就会很长。

    AOF的优点:

    1. 数据更加完整,丢失数据的可能性较低;
    2. AOF日志文件可读,并且可以对AOF文件修复。

    AOF的缺点:

    1. AOF日志记录在长期运行中逐渐庞大,恢复起来非常耗时,需要定期对AOF日志进行瘦身处理;
    2. 恢复备份速度比较慢。
  • 相关阅读:
    媒体梦工厂AI智聊:轻松提升工作效率的智能助手
    ElasticSearch虚拟机安装(单机版)
    Opencv项目实战:14 手势控制音量
    ReentrantLock 先删再批量保存 ReentrantLock有啥用
    [FineReport]安装与使用(连接Hive3.1.2)
    【产品设计】有了创意,如何从零开始搭建一套产品模型
    HCIE-Security Day47:AC准入控制MAC
    HarmonyOS云开发基础认证【最新题库 满分答案】
    【开源】基于Vue.js的社区买菜系统的设计和实现
    【基础框架】Spring_下
  • 原文地址:https://blog.csdn.net/zlfjavahome/article/details/126348003