LiSheng's blog LiSheng's blog
首页
笔记
个人简历
随笔集
GitHub (opens new window)
首页
笔记
个人简历
随笔集
GitHub (opens new window)
  • golang

  • cplus

  • leetcode

  • 存储技术

  • 分布式系统

  • 计算机网络

  • Linux操作系统

  • Redis

    • 大纲
    • redis持久化策略
    • redis事务
    • redis分布式锁
    • redis高可用
    • redis主从同步
    • Redis是什么
    • Redis基本数据结构
    • Redis为什么这么快
    • 缓存击穿、缓存穿透、缓存雪崩
    • 热Key问题,如何解决热key问题
    • Redis 过期策略和内存淘汰策略
    • Redis 的持久化机制
      • Redis的高可用
      • 使用过Redis分布式锁
      • Redis的跳跃表
      • MySQL与Redis 如何保证双写一致性
      • Redis的Hash 冲突怎么办
      • 布隆过滤器
      • Redis 事务机制
    • 其他

    • 笔记
    • Redis
    lisheng
    2024-09-10
    目录

    Redis 的持久化机制

    Redis 提供了多种持久化机制,用于将数据保存在磁盘上,避免数据丢失。以下是 Redis 的主要持久化机制及其优缺点:

    # 1. RDB(Redis Database Backup)

    机制:

    • RDB 是 Redis 的一种快照方式的持久化机制。Redis 会在指定的时间间隔内,将数据的快照保存到一个 RDB 文件中。
    • 可以通过手动执行 SAVE 或 BGSAVE 命令来生成快照,也可以配置 Redis 让它在一定条件下自动生成快照。

    优点:

    • 性能优越: RDB 文件是在子进程中生成的,不会阻塞主进程,因此对 Redis 的读写性能影响较小。
    • 恢复速度快: RDB 文件是二进制格式,恢复时速度较快,适合快速冷备恢复。
    • 占用空间少: RDB 文件是紧凑的二进制格式,通常比 AOF 文件占用的磁盘空间要少。

    缺点:

    • 数据丢失风险: 因为 RDB 是周期性生成的快照,在最后一次快照之后的修改数据不会被持久化,导致数据可能丢失。
    • 生成快照耗时: 如果数据量大,生成 RDB 文件可能耗时较长,占用较多的内存。

    适用场景:

    • 适用于对数据完整性要求不高、对性能要求较高的场景,如缓存等。

    # 2. AOF(Append-Only File)

    机制:

    • AOF 持久化机制通过将每次写操作都记录到日志文件中(AOF 文件),可以将 Redis 的每个写操作记录下来,确保更高的数据一致性。
    • AOF 支持三种同步方式:always(每次写入都同步)、everysec(每秒同步一次,默认设置)、no(不同步,依赖操作系统自己将数据刷到磁盘)。

    优点:

    • 数据恢复更加完整: AOF 能保证数据的持久性更高,恢复时几乎不会丢失数据(取决于同步策略)。
    • 可控性强: AOF 文件可以通过重写(Rewrite)机制来减少日志文件大小,避免文件无限增长。
    • 灵活的同步策略: 可以根据业务需求设置不同的同步策略,以在性能与数据安全性之间取得平衡。

    缺点:

    • 文件体积大: AOF 文件通常比 RDB 文件大,因为它记录了所有的写操作。
    • 恢复速度慢: 恢复 AOF 文件需要逐条重放日志,速度较慢。
    • 写入性能影响: 由于每次写操作都需要记录日志,在高并发写入的情况下,AOF 可能影响 Redis 的写入性能。

    适用场景:

    • 适用于对数据一致性要求高的场景,如金融类应用。

    # 3. RDB 和 AOF 混合持久化(Mixed Persistence)

    机制:

    • Redis 从 4.0 开始支持 RDB 和 AOF 混合持久化。在这种模式下,Redis 在进行 AOF 重写时,会先将内存中的数据快照以 RDB 形式写入到 AOF 文件中,然后继续追加写操作日志。这种方式结合了 RDB 的快速恢复和 AOF 的高数据一致性优点。

    优点:

    • 恢复速度较快: 混合持久化结合了 RDB 和 AOF 的优势,可以在保证数据完整性的前提下,提高恢复速度。
    • 文件大小适中: 通过 RDB 快照与 AOF 日志相结合,文件体积通常比纯 AOF 较小。

    缺点:

    • 实现复杂: 这种持久化机制相对复杂,配置和调优可能需要更多的经验和知识。
    • 潜在性能开销: 尽管混合持久化在恢复和文件体积上有优势,但在写入高峰期可能仍会有性能开销。

    适用场景:

    • 适用于既需要高数据恢复速度,又需要较高数据一致性的场景。

    # 4. 无持久化

    机制:

    • Redis 也可以选择不进行任何持久化,即在配置文件中将 RDB 和 AOF 都关闭,所有数据仅存在于内存中。

    优点:

    • 极致性能: 无持久化模式下,Redis 的所有操作都只在内存中进行,读写性能达到最高。
    • 简单易用: 不需要配置持久化策略,适合临时数据处理。

    缺点:

    • 数据易丢失: 由于数据只存储在内存中,一旦服务器宕机,所有数据都会丢失。

    适用场景:

    • 适用于不需要持久化的数据,如临时缓存、会话数据等。

    # 总结

    • RDB: 性能好,适合需要快速冷备恢复的场景,但存在数据丢失风险。
    • AOF: 数据完整性高,适合对数据安全性要求高的场景,但文件较大,恢复速度较慢。
    • 混合持久化: 结合 RDB 和 AOF 的优点,适合需要快速恢复且数据安全性高的场景。
    • 无持久化: 性能极高,但数据不持久化,适合临时数据处理场景。
    编辑 (opens new window)
    上次更新: 2024/09/13, 11:59:12
    Redis 过期策略和内存淘汰策略
    Redis的高可用

    ← Redis 过期策略和内存淘汰策略 Redis的高可用→

    最近更新
    01
    ceph分布式存储-对象存储(RGW)搭建
    10-27
    02
    ceph分布式存储-集群客户端连接
    10-27
    03
    ceph分布式存储-管理crushmap
    10-27
    更多文章>
    Theme by Vdoing
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式