Redis如何实现持久化

持久化就是把内存的数据写到磁盘中,防redis宕机导致内存数据丢失。

Redis支持两种方式的持久化,一种是RDB的方式,一种是 AOF的方式。前者会根据指定的规则定时将内存中的数据存储在硬盘上(RDB),而后者在每次执行完命令后将命令记录下来。一般将两者结合使用。

RDB方式

RDB是Redis默认的持久化方案。RDB持久化时会将内存中的数据写入到磁盘中,在指定目录下生成一个dump.rdb文件。Redis重启会加载dump.rdb文件恢复数据。

Redis启动时会读取RDB快照文件,将数据从硬盘载入内存。通过RDB方式的持久化,一旦Redis异常退出,就会丢失最近一次持久化以后更改的数据。

RDB优点

a. Redis 加载RDB恢复数据远远快于AOF的方式。

b.使用单独子进程来进行持久化,主进程不会进行任何IO操作,保证了Redis 的高性能。

RDB缺点:

a. RDB方式数据无法做到实时持久化。因为BGSAVE 每次运行都要执行fork)操作创建子进程,属于重量级操作,频繁执行成本比较高。

b. RDB文件使用特定二进制格式保存,Redis版本升级过程中有多个格式的RDB版本,存在老版本Redis 无法兼容新版RDB格式的问题。

AOF方式

AOF(append only file)持久化:以独立日志的方式记录每次写命令,Redis重启时会重新执行AOF文件中的命令达到恢复数据的目的。AOF的主要作用是解决了数据持久化的实时性,AOF是Redis持久化的主流方式。

如果AOF文件越来越大,还要进行AOF重写。

AOF优点:

a. AOF可以更好的保护数据不丢失,可以配置AOF每秒执行一次fsync操作,如果Redis进程挂掉,最多丢失1秒的数据。

b. AOF以 append-only的模式写入,所以没有磁盘寻址的开销,写入性能非常高。

AOF缺点:

a. 对于同一份文件AOF文件比RDB数据快照要大。

b.数据恢复比较慢。

相关推荐

  1. Redis如何实现持久

    2024-05-16 02:36:06       9 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-16 02:36:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-16 02:36:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-16 02:36:06       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-16 02:36:06       20 阅读

热门阅读

  1. 【Go语言入门学习笔记】Part1.梦开始的地方

    2024-05-16 02:36:06       9 阅读
  2. day 27 第七章 回溯算法part03

    2024-05-16 02:36:06       10 阅读
  3. python strftime和strptime的不同分析

    2024-05-16 02:36:06       11 阅读
  4. react-native 渲染引擎经历了什么

    2024-05-16 02:36:06       8 阅读
  5. c++20 constexpr consteval

    2024-05-16 02:36:06       11 阅读
  6. 链表的算法

    2024-05-16 02:36:06       11 阅读
  7. docker

    docker

    2024-05-16 02:36:06      8 阅读
  8. Linux 第三十二章

    2024-05-16 02:36:06       12 阅读