Redis持久化机制
Redis 的优点和缺点优点读写性能优异支持数据的持久化,支持 RDB 和 AOF 两种持久化方式支持主从复制,主机会自动将数据同步到从机,可以进行读写分离支持丰富的数据结构,支持 String,List,Set,Zset(有序集合),Hash 五种数据结构缺点Redis 不具备自动容错和恢复功能。主机,从机的宕机都会导致读写请求失败,需要等待机器重启才能恢复主机宕机,宕机前有部分数据未能及时同步
目录
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 |
---|---|---|
启动优先级 | 低 | 高 |
文件大小 | 小 | 大 |
恢复速度 | 快 | 慢 |
数据安全性 | 丢数据 | 根据策略决定 |
更多推荐
所有评论(0)