• Redis代码实践总结(三)——redis持久化


    Redis如何将数据写入磁盘

    持久性是指将数据写入持久存储,例如固态磁盘 (SSD)。Redis 提供了一系列持久性选项。这些包括:

    • RDB(Redis 数据库):RDB 持久性以指定的时间间隔执行数据集的时间点快照。
    • AOF(仅追加文件):AOF持久性记录服务器接收到的每个写操作。然后可以在服务器启动时再次重播这些操作,从而重建原始数据集。命令使用与 Redis 协议本身相同的格式进行记录。
    • 无持久性:您可以完全禁用持久性。有时在缓存时会使用到这一点。
    • RDB + AOF:您还可以在同一个实例中组合 AOF 和 RDB。

    总结 :

    持久化是因为要考虑redis的重启或崩溃的情况。 持久化机制将 Redis 数据库的状态保存到磁盘中,以便在重新启动时可以将数据重新加载到内存中,从而保护了数据的完整性和持久性。
    如果你的redis里的key-value不重要,那么就不用搞这个。
    (当然一般的重要的东西,我们都会落库,不会放到redis。 但是如果你用了redis 保存一些很重要的东西,那么这一部分就很有必要了)

    关系型数据库的优点

    • RDB 是 Redis 数据的非常紧凑的单文件时间点表示形式。RDB 文件非常适合备份。例如,您可能希望在最近 24 小时内每小时归档一次 RDB 文件,并在 30 天内每天保存一个 RDB 快照。这使您可以在发生灾难时轻松恢复不同版本的数据集。
    • RDB 非常适合灾难恢复,它是一个紧凑的文件,可以传输到远程数据中心或 Amazon S3(可能是加密的)。
    • RDB 最大限度地提高了 Redis 的性能,因为 Redis 父进程为了持久化需要做的唯一工作就是派生一个子进程,该子进程将完成其余所有工作。父进程永远不会执行磁盘 I/O 或类似操作。
    • 与 AOF 相比,RDB 允许更快地重新启动大数据集。
    • 在副本上,RDB 支持重启和故障转移后的部分重新同步。

    总结

    Redis作为内存数据库,当它写入磁盘时,有两个策略或者说方案。一是RDB,一是AOF。
    RDB相当于快照,也就是redis内存的备份。这个备份有几种时间策略,比如说每小时一次,或者redis 内存的键改动多少次后备份一次。好处是它很少影响性能,以及备份了多个时间点的数据。缺点是RDB可能丢失最近几分钟或近一个小时的改动。
    Redis目前默认是RDB,会生产dump.rdb文件,但是RDB的参数配置是没有打开的。也就是不会默认每小时保存快照。

    AOF相当于记录了redis数据库的所有写入操作,类似于db会记录操作日志。
    那么为了记录redis的每个写入操作,对于性能上有一些影响,相对的,对于数据的完整性方面就比RDB更好。优点是能够保证最新的操作记录和内存数据,缺点是文件会比RDB大。
    目前AOF的有几种同步(fsync )策略。比如每秒同步一次,每次写操作都同步一次,和根据不同步。推荐的是每秒同步一次。

    操作记录

    RDB

    打开redis.conf配置文件
    在这里插入图片描述
    dir这个配置会影响dump.rdb的位置,默认是./ 表示dump文件会 保存在 Redis 服务器启动时的工作目录(working directory)中。工作目录通常是运行 Redis 服务器的当前目录
    也就是这个目录下;
    在这里插入图片描述

    在这里插入图片描述
    save配置没有放开注释,表示rdb不会继续生产文件了。当你要用,记得放开save这个配置。

    AOF

    您可以在配置文件中打开 AOF:

    appendonly yes
    
    • 1

    在这里插入图片描述
    标红的是两个重要的aof配置。 具体含义看下面这个截图。
    在这里插入图片描述
    注释里也说明了aof和rdb是可以同时使用的,但是aof会优先,因为他更能保证durability(acid里的d 表示持久性)

    在这里插入图片描述

    总结

    当我同时打开aof和rdb时。我有了这些文件:在这里插入图片描述

    最后: 如果真的要持久化,不管rdb还是aof,记得定时将dump文件,aof文件这些复制到远端其他机器上。这样当机器损坏时,就派上用场了。

  • 相关阅读:
    spring5(一):概述
    详解OpenCV的函数imread()和函数imshow(),并利用它们实现对图像的读取和显示
    一起Talk Android吧(第三百七十九回:让ViewPager一屏幕显示三页)
    Elasticsearch学习(一)
    常用的机器学习模型算法
    CentOS7启动网卡
    (持续更新中!)详解【计算机类&面试真题】军队文职考试 ——第二期(真题+解析)| 网络协议的三个核心要素;交互式系统中的非剥夺策略;中断和陷入的区别;可变分区管理中的硬件机制;数据库系统的优点
    Solidity之变量数据存储和作用域
    【软件与系统安全笔记】二、软件与系统安全基础
    一文汇总VSCode多光标用法
  • 原文地址:https://blog.csdn.net/m0_37530301/article/details/133317262