redis数据持久化之RDB和AOF

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
日志服务 SLS,月写入数据量 50GB 1个月
简介: redis数据持久化之RDB和AOF

前言

redis虽然是内存缓存程序,但是可以将内存中的数据保存到硬盘上,从而实现数据保存。目前有两种redis数据持久化方式,分别是RDB和AOF。

RDB模式

RDB之简介

RDB(redis database),redis每隔一段时间对当前数据生成一个“快照”,默认只保留最新的一份快照,默认快照文件名为“dump.rdb”。redis.conf的配置如下:

# 900秒内,如果超过1个key被修改,则发起快照保存
save 900 1
# 300秒内,如果超过10个key被修改,则发起快照保存
save 300 10
# 60秒内,如果超过10000个key被修改,则发起快照保存
save 60 10000

RDB之优缺点

  • 优点
  • RDB基于时间点保存数据,可以通过脚本自定义时间点备份并保留多个备份,当出现问题时可以恢复到不同时间点的版本。
  • 大数据量时恢复较快
  • 缺点:
  • 实时性不高,一旦发生故障,可能会丢失好几分钟的数据。
  • 数据量很大时,备份时间较长。

AOF模式

AOF之简介

AOF(Append Only File),redis将所有对数据库进行写入的命令(及其参数)记录到AOF文件(默认文件appendonly.aof)中。redis.conf配置如下:

appendfsync yes
# 每次有数据修改时都会写入AOF文件
appendfsync always
# 每秒同步一次。aof默认策略
appendfsync everysec

appendfsync的三个可选值:

  • everysec:每秒写回,每个写命令成功执行完,吸纳吧日志写到AOF文件的内存缓冲区,每隔一秒把缓冲区的内容写入磁盘。优点:基本不丢数据。缺点:影响主线程性能。
  • always:同步写回,每个写命令成功执行完,立马将日志同步写入磁盘。
  • no:操作系统控制的写回,每个写命令成功执行完,只是先把日志写到AOF的内存缓冲区,由操作系统决定何时将缓冲区内容写回磁盘。优点:性能好。缺点:落盘时机不受redis控制,宕机时损失数据可能很多。

AOF重写机制

为了避免AOF文件多大,redis根据数据库现状创建一个新的AOF文件。旧日志中的多条重复命令被合并为一条命令。AOF重写时会fork一个子进程bgrewriteaof来处理(fork的一瞬间会阻塞主线程),避免对主线程造成过多的影响。

AOF之优缺点

  • 优点:
  • 实时性更强,即便故障,按照默认的fsync策略,也只会丢失1秒的数据。
  • 缺点:
  • 相较于RDB模式,更占用硬盘存储空间。而且由于记录的是操作命令,故障恢复时需要逐一执;如果操作日志很多,恢复就很缓慢。

补充

  • redis4.0中提出了一个混合使用AOF和RDB的方法。简单来说,RDB以一定频率执行,两次RDB之间执行AOF。这样一来,RDB不需要频繁执行,AOF也只用记录两次RDB之间的操作。设置参数为:
aof-use-rdb-preamble yes
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
27天前
|
存储 NoSQL Redis
Redis 持久化揭秘:选择 RDB、AOF 还是混合持久化?
Redis 是一个内存数据库,意味着它主要将数据存储在内存中,从而能够提供极高的性能。然而,作为内存数据库,Redis 默认情况下的数据不会永久保存。为了确保数据在重启或故障后能够恢复,Redis 提供了几种 **持久化机制**。这些机制允许 Redis 将内存中的数据保存到硬盘上,从而实现数据持久化。
108 22
Redis 持久化揭秘:选择 RDB、AOF 还是混合持久化?
|
23天前
|
缓存 NoSQL Redis
Redis经典问题:数据并发竞争
数据并发竞争是大流量系统(如火车票系统、微博平台)中常见的问题,可能导致用户体验下降甚至系统崩溃。本文介绍了两种解决方案:1) 加写回操作加互斥锁,查询失败快速返回默认值;2) 保持多个缓存备份,减少并发竞争概率。通过实践案例展示,成功提高了系统的稳定性和性能。
|
23天前
|
缓存 监控 NoSQL
Redis经典问题:数据不一致
在使用Redis时,缓存与数据库数据不一致会导致应用异常。主要原因包括缓存更新失败、Rehash异常等。解决方案有:重试机制、缩短缓存时间、优化写入策略、建立监控报警、定期验证一致性、采用缓存分层及数据回滚恢复机制。这些措施可确保数据最终一致性,提升应用稳定性和性能。
|
1月前
|
NoSQL 安全 Redis
redis持久化策略
Redis 提供了两种主要的持久化策略:RDB(Redis DataBase)和AOF(Append Only File)。RDB通过定期快照将内存数据保存为二进制文件,适用于快速备份与恢复,但可能因定期保存导致数据丢失。AOF则通过记录所有写操作来确保数据安全性,适合频繁写入场景,但文件较大且恢复速度较慢。两者结合使用可增强数据持久性和恢复能力,同时Redis还支持复制功能提升数据可用性和容错性。
60 5
|
2月前
|
缓存 NoSQL 关系型数据库
Redis和Mysql如何保证数据⼀致?
在项目中,为了解决Redis与Mysql的数据一致性问题,我们采用了多种策略:对于低一致性要求的数据,不做特别处理;时效性数据通过设置缓存过期时间来减少不一致风险;高一致性但时效性要求不高的数据,利用MQ异步同步确保最终一致性;而对一致性和时效性都有高要求的数据,则采用分布式事务(如Seata TCC模式)来保障。
76 14
|
2月前
|
存储 NoSQL 算法
Redis分片集群中数据是怎么存储和读取的 ?
Redis集群采用哈希槽分区算法,共有16384个哈希槽,每个槽分配到不同的Redis节点上。数据操作时,通过CRC16算法对key计算并取模,确定其所属的槽和对应的节点,从而实现高效的数据存取。
63 13
|
2月前
|
缓存 NoSQL PHP
Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出
本文深入探讨了Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出。文章还介绍了Redis在页面缓存、数据缓存和会话缓存等应用场景中的使用,并强调了缓存数据一致性、过期时间设置、容量控制和安全问题的重要性。
52 5
|
8月前
|
NoSQL 关系型数据库 MySQL
Redis持久化机制 RDB 和 AOF 的选择
Redis持久化机制 RDB 和 AOF 的选择
113 0
|
3月前
|
存储 缓存 NoSQL
大数据-45 Redis 持久化概念 RDB AOF机制 持久化原因和对比
大数据-45 Redis 持久化概念 RDB AOF机制 持久化原因和对比
62 2
大数据-45 Redis 持久化概念 RDB AOF机制 持久化原因和对比
|
3月前
|
存储 缓存 NoSQL
大数据-46 Redis 持久化 RDB AOF 配置参数 混合模式 具体原理 触发方式 优点与缺点
大数据-46 Redis 持久化 RDB AOF 配置参数 混合模式 具体原理 触发方式 优点与缺点
83 1