redis持久化
一. RDB持久化
1.1 RDB持久化的一些特性
用save(阻塞)和bgsave(非阻塞,派生一个子进程来处理)可以生成RDB文件.
因为AOF文件的更新频率比RDB高,所以如果开启了AOF会优先使用AOF来还原数据库状态.
服务器在载入RDB文件期间会一直阻塞,直到完成.
1.2 自动保存间隔
我们可以在配置文件中配置.
save 900 1;save 300 1;
分别代表900秒内进行至少一次修改,300秒内至少一次修改,那么就会执行BGSAVE
1.3 RDB文件结构
RDB保存的都是二进制文件
redis:默认的五个字节的字符
db_version:长度4个字节,代表RDB文件的版本号
databases:保存各个数据库的键值对
EOF:长度为1字节,表示RDB文件结束.
check_sum:8字节无符号整数,保存着一个校验和.
具体的databases的结构如下图所示
selectdb:默认的常量
db_number:数据库对应的编号
key_value_pairs:由类型,键,值组成(type,key,value)
1.4 分析RDB文件
在控制台执行od -c dump.rdb命令,可以看到rdb文件的二进制表示
0000000 R E D I S 0 0 0 7 372 \t r e d i s 0000020 - v e r 005 3 . 2 . 8 372 \n r e d i 0000040 s - b i t s 300 @ 372 005 c t i m e 133 0000060 [ s 216 Z 372 \b u s e d - m e m 302 220 0000100 _ 017 \0 377 [ 036 t 240 223 < 300 ) 0000114
二.AOF持久化
与RDB持久化通过保存数据库键值对不同,AOF方式是通过保存执行的写命令来记录数据库状态的.
2.1 AOF持久化功能的实现
AOF持久化功能的实现分为命令追加(append),文件写入,文件同步(sync)三个步骤.
redis服务器进程就是一个事件循环,服务器在处理文件事件时可能会执行写命令,使得一些内容被追加到aof缓冲区中,所以每次结束事件处理的时候,都要考虑是否要将AOF缓冲区的内容写入和保存到AOF文件里面.
appendfsync选项 | 行为 |
always | 写入AOF并同步AOF(最安全最慢,最多丢失一条数据) |
everysec(默认) | 写入AOF,如果距离上次同步超过1秒,则同步aof,这个操作由另外一个线程完成(最多丢失1秒的数据) |
no | 写入不同步,何时同步由操作系统决定 |
2.2 AOF文件的载入与数据还原
具体还原步骤如下:
1.创建一个伪客户端.
2.从AOF中读取命令
3.使用伪客户端发送命令
2.3 AOF重写
随着时间的流逝,AOF文件的体积会越来越大,所以需要重写AOF来精简它.redis服务器会创建一个新的AOF文件代替旧的AOF文件.
举个例子: 执行1000次 incre msg 1,AOF会把这1000条命令精简为set msg 1000.
由于aof重写会阻塞进程,所以通常将AOF重写放到子进程去.以便于进程可以继续处理命令请求,不过这样也有一个问题,AOF重写过程中,新的命令如何同步?
redis设计了一个AOF重写缓冲区,它在服务器创建子进程之后开始使用,当redis执行完一个写命令的时候,它会同时把这个命令发送给AOF缓冲区和重写缓冲区.
相关推荐
### Redis持久化方式详解 Redis 是一款高性能的键值存储系统,因其卓越的读写速度、丰富的数据结构以及灵活的应用场景而备受青睐。为了保证数据的安全性和持久性,Redis 提供了两种主要的持久化机制:RDB 快照...
Redis持久化、主从与哨兵架构详解 Redis持久化是指将Redis中的数据保存到磁盘中,以便在Redis服务器重启或崩溃后可以恢复数据。Redis提供了两种持久化方式:RDB快照和AOFAppend-Only File。 RDB快照 RDB快照是...
Redis持久化是指利用永久性存储介质将Redis内存中的数据保存到磁盘上的过程,以防止数据的意外丢失,确保数据的安全性。其主要目的就是在Redis服务出现意外情况下,能够通过持久化存储的数据进行恢复,保证业务的...
02-Redis持久化、主从与哨兵架构详解02-Redis持久化、主从与哨兵架构详解02-Redis持久化、主从与哨兵架构详解02-Redis持久化、主从与哨兵架构详解02-Redis持久化、主从与哨兵架构详解02-Redis持久化、主从与哨兵架构...
Redis持久化的配置和管理涉及多个方面的知识,包括但不限于配置文件的设置、内存管理、文件系统的性能、以及操作系统的相关策略等。用户应充分了解这些知识点,以确保Redis能够稳定且高效地运行。
Redis持久化机制包括RDB快照和AOF(Append Only File)两种方式,它们有不同的特点和使用场景,下面将详细分析这两种机制。 首先,RDB是通过创建数据集的快照来进行持久化的,在默认情况下,Redis会在内存中存储...
Redis是一款高性能的键值对内存数据库,常用于缓存、消息队列以及数据持久化等场景。本资料包主要探讨Redis的三个核心概念:持久化、主从复制和哨兵架构,这些都是确保Redis高可用性和数据安全的重要机制。 首先,...
Redis 持久化是确保数据安全的重要机制,它提供了两种主要的方法:RDB(Redis Database)和 AOF(Append Only File)。RDB 是一种快照式的持久化方式,而 AOF 则记录每次写操作的日志。 RDB 持久化在特定条件下将...
Redis 是一个高性能的键值数据库,广泛应用于缓存、数据持久化等场景。在 Windows 上测试 Redis 的持久化功能,主要是确保数据在系统重启或异常情况后能够被正确地保存和恢复。以下将详细介绍如何在 Windows 环境下...
Redis 是一款高性能的键值存储系统,广泛应用于缓存和数据持久化。持久化是Redis的一个重要特性,确保即使在服务器崩溃或系统断电后,数据也能得以恢复。本文将深入解析Redis的持久化机制,主要包括RDB快照和AOF日志...
### Redis 持久化与集群部署探讨 #### 一、Redis 持久化机制 Redis 提供了两种持久化方式:RDB(Redis Database Backup)和 AOF(Append Only File)。这两种机制各有特点,适用于不同的场景。 ##### 1. RDB...
redis,持久化,主要说明了redis中的两种持久化方式,是可以值得参考的
【Redis持久化机制详解】 Redis作为一种高性能的内存数据库,其数据存储在内存中,因此面临一个问题:当系统崩溃或服务器意外关机时,内存中的数据可能会丢失。为了解决这个问题,Redis提供了两种主要的持久化机制...
Redis 持久化是 Redis 为了解决内存数据库在服务器宕机或重启时数据丢失问题而提供的功能。本文主要介绍了 Redis 的两种持久化机制:RDB(Redis Database Backup file)和 AOF(Append Only File),重点讲解了 RDB ...
### Redis Windows 测试Redis持久化功能 #### 一、Redis持久化概述 Redis 提供了两种持久化方式:RDB(Redis Database Backup)和AOF(Append Only File)。本篇文章将重点讨论 RDB 方式的持久化配置与测试方法。 ...
“Redis持久化 - RDB和AOF” Redis持久化是指将数据库中的数据保存到永久存储设备中,以避免数据丢失。Redis提供了两种持久化方式:RDB(快照方式)和AOF(写日志方式)。 RDB(Redis Database)是一种快照方式的...
下面是对 Redis 的常用命令、配置文件、持久化、事务、主从复制、Jedis 使用的详细讲解。 Redis 常用命令 Redis 提供了很多有用的命令来管理和操作数据。下面是一些常用的 Redis 命令: * SET key value:设置...
Redis 持久化是确保数据在 Redis 服务器重启或发生故障时不会丢失的重要机制。主要包含两种方式:RDB(Redis Database Persistence)快照和 AOF(Append Only File)日志。 RDB 快照是 Redis 默认的持久化方式之一...
### Redis 持久化详解 #### 一、引言 Redis 作为一款高性能的键值存储系统,广泛应用于各种场景中的数据缓存与管理。虽然 Redis 的主要特性在于其高速的内存操作能力,但为了确保数据的安全性及可靠性,Redis 提供...