Redis提供两种持久化机制,供用户灵活的选用、组合使用:
- 基于快照的持久化机制:rdb
- 基于日志的持久化机制:aof
1.快照
1.1 基于快照的持久化
基于快照的持久化(rdb):在系统满足用户设置的条件(时间间隔和累计的写操作次数两方面)时,触发系统向磁盘写入快照从而达到数据持久化的目的。系统将向磁盘写入一个.rdb文件作为所有数据的dump。这个.rdb文件也可以作为备份文件。
快照机制的缺陷也是比较明显的:在两次快照之间,可能有显著的数据丢失。
1.2 源码总结
从代码角度分析,rdb机制的代码调用关系可以用下图总结:
不难分析发现:rdbSave()函数是rdb机制的底层核心实现。触发rdb的时机主要有:
- 客户端发送SAVE/BGSAVE/FLUSHALL/SHUTDOWN命令
- Sentinel触发
- 主从复制中,rdb作为从主节点到从节点的数据复制机制
rdbSave()的主要工作流程:
1.3 两个设计要点
- 当使用background save时,Redis的快照机制充分利用了Linux 的Copy On Wirte机制。向磁盘写快照的工作由新fork出来的子进程完成,不影响主服务进程的运行。基于Copy On Write策略,子进程由于没有进行任何写操作,可以从父进程的内存空间中直接读取数据写入磁盘。
- 快照是直接从最终数据集中读取数据写入磁盘的,所以,所有事务要不全部执行完成,要不根本不存在在快照中
2. 日志
2.1 基于日志的持久化
基于日志的持久化机制把每一条修改了数据集的命令都通过APPEND的方式写入到日志。一旦出现实例宕机,重启后Replay日志就可以恢复数据。
2.2 源码总结
基本工作流程如下图所示:
- 每条命令的具体执行都会调用call()函数,如果该命令涉及到写操作,那么会调用progagate()函数来传播写操作到AOF和slaves。
- 传播到AOF的工作由feedAppendOnlyFile()完成,主要工作是分析翻译命令写入命令缓存aof_buf。详细流程图见下面附图。
- 在每一条命令执行前检查aof_buf,并根据aofsync配置调用flushAppendOnlyFile()函数写入到磁盘
- 当AOF文件太大的时候会进行AOF Rewrite,直接从内存数据集中拉取数据,新建最小的日志文件
feedAppendOnlyFile()函数的主要工作流程如下图所示:
分享到:
相关推荐
适合人群:具有基础Redis知识的研发人员,尤其是对Redis持久化机制有深入了解需求的后端开发工程师。 使用场景及目标:①掌握Redis持久化机制的实现细节,提升Redis数据管理能力;②根据业务需求选择合适的持久化...
Redis持久化策略详解
【Redis持久化机制详解】 Redis作为一种高性能的内存数据库,其数据存储在内存中,因此面临一个问题:当系统崩溃或服务器意外关机时,内存中的数据可能会丢失。为了解决这个问题,Redis提供了两种主要的持久化机制...
02-Redis持久化、主从与哨兵架构详解02-Redis持久化、主从与哨兵架构详解02-Redis持久化、主从与哨兵架构详解02-Redis持久化、主从与哨兵架构详解02-Redis持久化、主从与哨兵架构详解02-Redis持久化、主从与哨兵架构...
Redis持久化、主从与哨兵架构详解 Redis持久化是指将Redis中的数据保存到磁盘中,以便在Redis服务器重启或崩溃后可以恢复数据。Redis提供了两种持久化方式:RDB快照和AOFAppend-Only File。 RDB快照 RDB快照是...
本资料包主要探讨Redis的三个核心概念:持久化、主从复制和哨兵架构,这些都是确保Redis高可用性和数据安全的重要机制。 首先,我们来详细了解一下Redis的持久化。Redis提供了两种主要的持久化方式:RDB(Redis ...
### Redis持久化方式详解 Redis 是一款高性能的键值存储系统,因其卓越的读写速度、丰富的数据结构以及灵活的应用场景而备受青睐。为了保证数据的安全性和持久性,Redis 提供了两种主要的持久化机制:RDB 快照...
Redis持久化机制包括RDB快照和AOF(Append Only File)两种方式,它们有不同的特点和使用场景,下面将详细分析这两种机制。 首先,RDB是通过创建数据集的快照来进行持久化的,在默认情况下,Redis会在内存中存储...
使用场景及目标:理解和掌握Redis的持久化机制,以便在实际生产环境中选择合适的持久化策略,提高数据的安全性和系统的可靠性。 阅读建议:读者应该重点关注RDB和AOF的具体实现原理及其优缺点,结合自己的业务需求...
Redis 持久化机制详解 Redis 是一个高性能的 NoSQL 数据库,为了确保数据的安全性和可靠性,Redis 提供了多种持久化机制,分别是 RDB 持久化方式和 AOF 持久化方式。本文将对 Redis 持久化机制进行详细的介绍和比较...
Redis 持久化机制详解 Redis 持久化是指将 Redis 中的数据保存到硬盘的过程,以便在 Redis 服务器重启或崩溃时可以从硬盘中恢复数据。Redis 提供了两种持久化方式:RDB 持久化和 AOF 持久化。 RDB 持久化 RDB ...
### Redis Windows 测试Redis持久化功能 #### 一、Redis持久化概述 Redis 提供了两种持久化方式:RDB(Redis Database Backup)和AOF(Append Only File)。本篇文章将重点讨论 RDB 方式的持久化配置与测试方法。 ...
Redis持久化、主从与哨兵架构详解
Redis 持久化是确保数据在 Redis 服务器重启或发生故障时不会丢失的重要机制。主要包含两种方式:RDB(Redis Database Persistence)快照和 AOF(Append Only File)日志。 RDB 快照是 Redis 默认的持久化方式之一...
下面是对 Redis 的常用命令、配置文件、持久化、事务、主从复制、Jedis 使用的详细讲解。 Redis 常用命令 Redis 提供了很多有用的命令来管理和操作数据。下面是一些常用的 Redis 命令: * SET key value:设置...
Redis 的持久化支持多种方式,包括 RDB 和 AOF 两种模式。 总结 Redis 是一个功能强大、性能高效的 NoSQL 键值存储数据库,广泛应用于缓存、任务列表、网站访问统计数据、过期处理、应用排行榜、分布式集群架构中...
### Redis 持久化详解 #### 一、引言 Redis 作为一款高性能的键值存储系统,广泛应用于各种场景中的数据缓存与管理。虽然 Redis 的主要特性在于其高速的内存操作能力,但为了确保数据的安全性及可靠性,Redis 提供...
### Redis持久化详解 #### 一、Redis持久化机制概览 Redis提供了两种持久化机制:RDB(Redis Database Backup)快照和AOF(Append Only File)。通过这两种方式可以确保Redis实例的数据在重启或故障后能够恢复。...
务的多个 Redis 实例,推荐使用 Sentinel 系统来实现高可用性和故障转移。 Sentinel 系统能够自动检测...同时,合理利用 Redis 的持久化机制,确保数据安全,通过客户端工具进行管理和测试,以优化 Redis 的使用效果。
- 设置 `appendonly yes` 可以启用 AOF 持久化方式,提高数据安全性。 ```bash appendonly yes ``` #### 二、Redis 集群配置详解 Redis 集群是一种分布式部署方案,支持自动分片和故障转移等功能。下面详细...