首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Redis持久化机制详解

Redis持久化机制

Redis的数据全部在内存中,如果突然宕机,内存中数据就会丢失,因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是Redis的持久化机制。

Redis有2种持久化机制:RDB(快照)机制 和 AOF(日志)机制

1、RDB机制(快照)

RDB机制保存的是数据,将内存中的数据写入磁盘永久保存,这是redis默认的机制。

原理:

redis进程会创建一个子进程

redis主进程继续处理客户端请求

子进程负责将子进程创建前的内存数据(快照数据)写入磁盘中名为dump.rdb文件

持久化时机:

redis.conf配置文件中配置的有持久化时机

在900秒(15分钟)之后,有大于等于1个key发生变化,则保存快照。

save 900 1

在300秒(5分钟)之后,有大于等于10个key发生变化,则保存快照。

save 300 10

在60秒(1分钟)之后,有大于等于10000个key发生变化,则保存快照。

save 60 10000

RDB的特点:

优势

方便备份,很容易将一个rdb文件移动到其他机器上  

rdb在恢复大数据集时比aof速度更快

rdb快照保存时,不影响主进程的工作

劣势

rdb每次要保存内存中所有数据,一般耗时比较久,一旦宕机可能会丢失数据

rdb机制下如果内存中数据量非常大,创建子进程会非常耗时

2、AOF机制(日志)

AOF(Append Only File)机制保存的是redis执行过的命令。

原理:

将redis执行过的每一个写命令都追加到日志文件(appendonly.aof)中。

当redis重启时会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。

开启AOF机制

在配置文件中将appendonly no 改为 appendonly yes

AOF机制开启后,RDB机制和AOF机制会同时运行

AOF持久化时机

配置文件中的配置

AOF的特点

优势

AOF可以更好的保护数据不丢失  

AOF日志文件以append-only模式写入,写入性能比较高

AOF日志可读性好,即使误删了所有的数据,只需要将日志中的删除命令去除,然后就可以根据日志恢复数据

劣势

相同的数据集下,AOF文件通常大于RDB文件

如果持久化时机策略选择不合理,性能会非常差

AOF在特殊情况下会出现一些bug

实战策略

综合使用AOF和RDB两种持久化机制,用AOF来保证数据不丢失,作为数据恢复的第一选择; 用RDB来做不同程度的冷备,在AOF文件都丢失或损坏不可用的时候,还可以使用RDB来进行快速的数据恢复。

3、AOF下的日志瘦身

Redis 在长期运行的过程中,AOF 的日志会越变越长。如果实例宕机重启,重放整个 AOF 日志会非常耗时,导致长时间 Redis 无法对外提供服务。所以需要对 AOF 日志瘦身。

原理

redis主进程创建一个子进程对内存进行遍历转换成一系列 Redis 的操作指令。将操作指令写到一个新的 AOF 日志文件中。

操作指令输出完毕后再将操作期间发生的增量操作追加到 AOF 日志中

追加完毕后就立即替代旧的 AOF 日志文件了,瘦身工作就完成了。

重做时机

自动重做

配置文件中进行配置

手动重做

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OeHbsdcHMDHUrf_94v8_cDIg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券