本篇主要讲一下Redis的持久化方式,以及其配置步骤。

Redis

安装

1
2
3
4
5
wget http://download.redis.io/releases/redis-5.0.5.tar.gz # 下载
tar xzf redis-5.0.5.tar.gz # 解压
cd redis-5.0.5 #
make # 编译
src/redis-server # 启动

注意,Redis默认是不支持远程访问的。
修改redis.conf 中的bind项为 0.0.0.0
需要在启动redis时指定配置文件路径(修改启动命令为./src/redis-server ./redis.conf)

以上命令均来源于中文官网 强烈建议按照官网教程安装

持久化

简介

Redis 提供了不同级别的持久化方式:

  • RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储.
  • AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾.Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大.
  • 你也可以同时开启两种持久化方式, 在这种情况下, 当redis重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整.

RDB

RDB配置方式

修改redis.conf文件,添加以下配置即可开启快照存储。(使用官方配置文件的话默认就是开启的)

1
2
3
save 900 1
save 300 10
save 60 10000

RDB工作方式

当 Redis 需要保存 dump.rdb 文件时, 服务器执行以下操作:

  • Redis 调用forks. 同时拥有父进程和子进程。
  • 子进程将数据集写入到一个临时 RDB 文件中。
  • 当子进程完成对新 RDB 文件的写入时,Redis 用新 RDB 文件替换原来的 RDB 文件,并删除旧的 RDB 文件。
    这种工作方式使得 Redis 可以从写时复制(copy-on-write)机制中获益。

RDB的优点

  • 单一文件方便灾难恢复。
  • 单一文件方便数据迁移。
  • 数据量较大时,恢复速度相对AOF更快一些。

RDB的缺点

  • 不是实时备份,如果出现意外停止,可能会丢失周期内的部分数据。
  • 由于是全量备份,备份速度相对于AOF方式较慢。

RDB测试步骤

  1. 修改配置(参照#配置方式)
  2. 重启Redis
  3. 修改Redis中的数据
  4. 重启Redis
  5. 对比数据一致性
  6. 查看dump.rdb文件日期,可以查看备份时间

AOF

AOF配置方式

修改配置文件,将appendonly项改为yes,默认为no

AOF工作原理

每执行一条语句将语句存储到appendonly.aof文件中。

AOF的优点

  • 实时备份,数据不会丢失。
  • 相比RDB而言备份速度较快。

AOF的缺点

  • 由于每次执行命令都要记录命令,影响性能。
  • 同数据量下,AOF的备份文件要比RDB文件大。
  • 相比RDB而言,恢复速度略慢

测试步骤

  1. 修改配置(参照#配置方式)
  2. 重启Redis
  3. 修改Redis中的数据
  4. 重启Redis
  5. 对比数据一致性
  6. 查看appendonly.aof文件日期,可以查看备份时间

总结

Redis有两种持久化方式

  1. RDB: 快照模式,默认开启,不是实时备份,配置格式为 save 60 1000(60 秒内有至少有 1000 个键被改动)
  2. AOF模式,保存命令,实时备份,配置格式我为appendonly yes
    两者可以同时开启,同时开启时, 优先使用AOF恢复数据。

附录