目录
1. Redis 的优点和缺点
1.1. 优点
- 读写性能优异
- 支持
RDB和AOF两种数据的持久化 - 支持主从复制,主机会自动将数据同步到从机,可以进行读写分离
- 支持丰富的数据结构,如
String,List,Set,Zset(有序集合),Hash五种数据结构
1.2. 缺点
Redis不具备自动容错和恢复功能。主机,从机的宕机都会导致读写请求失败,需要等待机器重启才能恢复- 主机宕机前,如果有部分数据未能及时同步到从机,重启主机后会导致数据不一致的问题
2. Redis 持久化机制
持久化数据:就是将内存中的数据写入到硬盘里面,大部分原因是为了之后重用数据(比如重启机器、机器故障之后恢复数据),或者是为了防止系统故障而将数据备份到一个远程位置。Redis 的持久化方式有 RDB 和 AOF 两种

2.1. RDB 快照持久化
Redis 可以通过创建快照来获得存储在内存里面的数据。创建快照之后,可以对快照进行备份,可以将快照复制到其他服务器从而创建具有相同数据的服务器副本( Redis 主从结构,主要用来提高 Redis 性能),还可以将快照留在原地以便重启服务器的时候使用

2.1.1. RDB 快照持久化方式
快照持久化是 Redis 默认采用的持久化方式,在 redis.conf 配置文件中默认有此下配置
# 在 900 秒(15分钟)之后,如果至少有 1 个 key 发生变化,Redis 就会自动触发 BGSAVE 命令创建快照
save 900 1
# 在 300 秒(5分钟)之后,如果至少有 10 个 key 发生变化,Redis 就会自动触发 BGSAVE 命令创建快照
save 300 10
# 在 60 秒(1分钟)之后,如果至少有 10000 个 key 发生变化,Redis 就会自动触发 BGSAVE命令创建快照
save 60 10000
2.1.2. RDB 快照持久化优点
RDB是一个非常紧凑的文件,它保存了某个时间点的数据集,非常适用于数据集的备份,比如你可以在每个小时保存一下过去24小时内的数据,同时每天保存过去30天的数据,这样即使出了问题你也可以根据需求恢复到不同版本的数据集RDB是一个紧凑的单一文件,很方便传送到另一个远端数据中心或者亚马逊的S3(可能加密),非常适用于灾难恢复- 与
AOF相比,在恢复大的数据集的时候,RDB方式会更快一些
2.1.3. RDB 快照持久化缺点
- 耗时、耗性能
- 不可控、丢失数据
2.2. AOF 持久化
与快照 RDB 持久化相比,AOF 持久化的实时性更好,因此已成为主流的持久化方案。默认情况下 Redis 没有开启 AOF 方式的持久化,可以通过 appendonly 参数开启
# 开启 AOF 持久化
appendonly yes
开启 AOF 持久化后每执行一条会更改 Redis 中的数据的命令,Redis 就会将该命令写入硬盘中的 AOF 文件。AOF 文件的保存位置和 RDB 文件的位置相同,都是通过 dir 参数设置的,默认的文件名是 appendonly.aof
2.2.1. AOF 的运行原理-创建

2.2.2. AOF 的运行原理-恢复

2.2.3. AOF 快照持久化方式
在 Redis 的配置文件中存在三种不同的 AOF 持久化方式,它们分别是
# 每次有数据修改发生时都会写入 AOF 文件,速度缓慢但是最安全
appendfsync always
# 每秒钟同步一次,显示地将多个写命令同步到硬盘。AOF 默认使用的
appendfsync everysec
# 让操作系统决定何时进行同步,速度最快
appendfsync no
为了兼顾数据和写入性能,用户可以考虑 appendfsync everysec 选项(AOF 默认使用) ,让 Redis 每秒同步一次 AOF 文件,Redis 性能几乎没受到任何影响。而且这样即使出现系统崩溃,用户最多只会丢失一秒之内产生的数据。当硬盘忙于执行写入操作的时候,Redis 还会优雅的放慢自己的速度以便适应硬盘的最大写入速度
3. RDB 与 AOF 的对比选择
| - | RDB | AOF |
|---|---|---|
| 启动优先级 | 低 | 高 |
| 文件大小 | 小 | 大 |
| 恢复速度 | 快 | 慢 |
| 数据安全性 | 丢数据 | 根据策略决定 |
版权声明:本文为weixin_38192427原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。