redis-持久化机制RDB和AOF

一文读懂Redis RDB持久化:策略、配置与应用 RDB持久化机制是将内存中的数据生成快照并持久化到磁盘的过程,RDB可以通过手动或者自动。 阅读详情

1、RDB快照方式

在默认情况下,Redis将内存数据库快照保存在名字为dump.rdb的二进制文件中。

在指定的时间间隔内将内存中的数据集快照写入磁盘。

1.1 设置RDB持久化(默认开启)

你可以对 Redis 进行设置, 让它在“ N 秒内数据集至少有 M 个改动”这一条件被满足时, 自动保存一次数据集。 比如说, 以下设置会让 Redis 在满足“ 60 秒内有至少有 1000 个键被改动”这一条件时, 自动保存一次数据集:

save 60 1000 //关闭RDB只需要将所有的save保存策略注释掉即可

在这里插入图片描述

可以手动执行命令生成rdb快照,进入redis的客户端执行命令save或bgsave可以生成dump.rdb文件,每次命令执行都会将所有redis内存快照到一个新的rdb文件里,并覆盖原有rdb快照文件。

1.2 bgsave写时复制机制

Redis 借助操作系统提供的写时复制技术(Copy-On-Write, COW),在生成快照的同时,依然可以正常处理写命令。简单来说,bgsave 子进程是由主线程 fork 生成的,可以共享主线程的所有内存数据。 bgsave 子进程运行后,开始读取主线程的内存数据,并把它们写入 RDB 文件。此时,如果主线程对这些数据也都是读操作,那么,主线程和 bgsave 子进程相互不影响。但是,如果主线程要修改一块数据,那 么,这块数据就会被复制一份,生成该数据的副本。然后,bgsave 子进程会把这个副本数据写入 RDB 文件,而在这个过程中,主线程仍然可以直接修改原来的数据。

结构图:
在这里插入图片描述

配置自动生成rdb文件后台使用的是bgsave方式。

1.3 fork()方法

bgsave的原理是fork()+copyonwrite

1、fork()有什么用

​ fork()用于创建一个子进程,注意是子进程,不是子线程。fork()出来的进程共享其父类的内存数据。仅仅是共享fork()出子进程的那一刻的内存数据,后期主进程修改数据对子进程不可见,同理,子进程修改的数据对主进程也不可见。比如:A进程fork()了一个子进程B,那么A进程就称之为主进程,这时候主进程子进程所指向的内存空间是同一个,所以他们的数据一致。但是A修改了内存上的一条数据,这时候B是看不到的,A新增一条数据,删除一条数据,B都是看不到的。而且子进程B出问题了,对我主进程A完全没影响,我依然可以对外提供服务,但是主进程挂了,子进程也必须跟随一起挂。这一点有点像守护线程的概念。Redis正是巧妙的运用了fork()这个牛逼的api来完成RDB的持久化操作。

2、redis中的fork()

​ Redis运用fork()。bgsave执行时,Redis主进程会判断当前是否有fork()出来的子进程,若有则忽略,若没有则会fork()出一个子进程来执行rdb文件持久化的工作,子进程与Redis主进程共享同一份内存空间,所以子进程可以搞他的rdb文件持久化工作,主进程又能继续他的对外提供服务,二者互不影响。我们说了他们之后的修改内存数据对彼此不可见,但是明明指向的都是同一块内存空间。这是咋搞得?肯定不可能是fork()出来子进程后顺带复制了一份数据出来,如果是这样的话比如我有4g内存,那么其实最大有限空间是2g,我要给rdb留出一半空间来,扯淡一样!那他咋做的?采取了copyonwrite技术。

3、rdb的备份

(1)复制一份dump.rdb文件

cp dump.rdb d.rdb

(2)杀掉redis服务

# 查看redis进程号
ps -ef|grep redis

# 杀掉redis进程
kill -9 进程号

在这里插入图片描述

(3)删掉dump.rdb文件

rm -f dump.db

(4)先把备份的文件拷贝到工作目录下,再修改配置文件的名称为原来的名称

mv d.rdb dump.db

(5)再重新启动redis服务

src/redis-server redis.conf

(6)连接客户端

src/redis-cli

(7)查看数据是否恢复

> keys *

4、RDB优势

(1)适合大规模的数据恢复

(2)对数据完整性和一致性要求不高更适合使用

(3)节省磁盘空间(二进制文件本身就比较小)

(4)恢复速度快

5、劣势

(1)Fork 的时候,内存中的数据被克隆了一份,大致 2 倍的膨胀性需要考虑。

(2)虽然 Redis 在 fork 时使用了写时拷贝技术,但是如果数据庞大时还是比较消耗性能。

(3)在备份周期在一定间隔时间做一次备份,所以如果 Redis 意外 down 掉的话,就会丢失最后一次快照后的所有修改

4、copyonwrite

​

5、save与bgsave对比:
在这里插入图片描述

2、AOF持久化 (append-only file)

2.1 、AOF默认不开启

可以在redis.conf中配置文件名称,默认为appendonly.aof

AOF文件的保存路径,同RDB的路径一致。

AOF和RDB同时开启,系统默认取AOF的数据

(1)向redis中设置值

[root@localhost redis-6.2.6]# src/redis-cli
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> set k11 v11
OK
127.0.0.1:6379> set k12 v12
OK
127.0.0.1:6379> set k13 v13
OK
127.0.0.1:6379> set k14 v14
OK
127.0.0.1:6379> 

(2)再开启一个连接,查看aof文件的大小,发现appendonly.aof文件的大小由原来的0变为147

[root@localhost redis-6.2.6]# ll
total 344
-rw-rw-r--.  1 root root 33624 Oct  4  2021 00-RELEASENOTES
-rw-r--r--.  1 root root   147 Jun 17 16:46 appendonly.aof
-rw-rw-r--.  1 root root    51 Oct  4  2021 BUGS
-rw-rw-r--.  1 root root  5026 Oct  4  2021 CONDUCT
-rw-rw-r--.  1 root root  3384 Oct  4  2021 CONTRIBUTING
-rw-rw-r--.  1 root root  1487 Oct  4  2021 COPYING
drwxrwxr-x.  7 root root   213 Jun 15 23:51 deps
-rw-r--r--.  1 root root   124 Jun 17 16:46 dump.rdb
2.2 AOF数据备份

(1)下面演示,aof如何数据备份的,首先是复制一份aof文件

[root@localhost redis-6.2.6]# cp appendonly.aof appendonly.aof.bak

(2)关掉redis服务

127.0.0.1:6379> shutdown

(3)删掉appendonly.aof文件

[root@localhost redis-6.2.6]# rm -rf appendonly.aof

(4)开始数据恢复,将备份文件名称改为原来的名称

[root@localhost redis-6.2.6]# mv appendonly.aof.bak appendonly.aof

(5)再重启redis服务,查看数据已经恢复

[root@localhost redis-6.2.6]# src/redis-server redis.conf
[root@localhost redis-6.2.6]# ps -ef|grep redis
root      37949      1  0 16:59 ?        00:00:00 src/redis-server *:6379
root      38389   1454  0 16:59 pts/0    00:00:00 grep --color=auto redis
[root@localhost redis-6.2.6]# src/redis-cli
127.0.0.1:6379> keys *
1) "k13"
2) "k12"
3) "k14"
4) "k11"
127.0.0.1:6379> 
2.3 异常恢复

(1)修改默认的appendonly no,改为yes

(2)演示AOF文件损坏的情况,如何进行文件修复

在文件中加点东西。保存退出

[root@localhost redis-6.2.6]# vim appendonly.aof 

在这里插入图片描述

(3)重启redis,发现重启失败
在这里插入图片描述

(4)使用命令进行恢复

[root@localhost redis-6.2.6]# src/redis-check-aof --fix appendonly.aof 
0x              93: Expected prefix '*', got: 'h'
AOF analyzed: size=154, ok_up_to=147, ok_up_to_line=34, diff=7
This will shrink the AOF from 154 bytes, with 7 bytes, to 147 bytes
Continue? [y/N]: y
Successfully truncated AOF
[root@localhost redis-6.2.6]# 

(5)再重启redis,发现启动成功

[root@localhost redis-6.2.6]# src/redis-server redis.conf
[root@localhost redis-6.2.6]# ps -ef|grep redis
root       9142      1  0 17:36 ?        00:00:00 src/redis-server *:6379
root       9326   1458  0 17:36 pts/0    00:00:00 grep --color=auto redis
2.3 AOF同步频率设置

1 appendfsync always:始终同步,每次redis的写入都会立刻记入日志,性能较差但数据完整性比较好。
2 appendfsync everysec:每秒 fsync(同步) 一次,足够快,并且在故障时只会丢失 1 秒钟的数据。
3 appendfsync no:从不 fsync ,将数据交给操作系统来处理。更快,也更不安全的选择。

2.4、基本原理

就是每次都在aof文件后面追加命令,他与主进程收到请求和处理请求是串行化的,而非异步并行的。
在这里插入图片描述

RDB存在的缺点:RDB快照功能并不是非常耐久(durable): 如果 Redis 因为某些原因而造成故障停机, 那么服务器将丢失最近写入、且仍未保存到快照中的那些数据。

从 1.1 版本开始, Redis 增加了一种完全耐久的持久化方 式: AOF 持久化,将修改的每一条指令记录以日志的文件保存到appendonly.aof中(先写入os cache,每隔一段时间 fsync到磁盘),只追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一遍以来恢复数据的工作。

可以通过修改redis.conf配置文件来打开AOF功能:改成yes

 # appendonly yes

在这里插入图片描述

从现在开始, 每当 Redis 执行一个改变数据集的命令时(比如 SET), 这个命令就会被追加到 AOF 文件的末尾。

这样的话,当 Redis 重新启动时, 程序就可以通过重新执行 AOF 文件中的命令来达到重建数据集的目的。

你可以配置 Redis 多久才将数据 fsync (同步)到磁盘一次。

有三个选项:

1 appendfsync always:每次有新命令追加到 AOF 文件时就执行一次 fsync ,非常慢,也非常安全。
2 appendfsync everysec:每秒 fsync(同步) 一次,足够快,并且在故障时只会丢失 1 秒钟的数据。
3 appendfsync no:从不 fsync ,将数据交给操作系统来处理。更快,也更不安全的选择。

推荐(并且也是默认)的措施为每秒 fsync(同步) 一次, 这种 fsync 策略可以兼顾速度和安全性。

2.5 AOF重写

1、为什么要重写?

如果是一个简单的业务,运行很长时间,delete k1,set k1 XXX,反复的设置、删除,这样时间长了后数据会很大,但是这些都是无用的命令,导致aof文件最后会变的很大。如果某天redis宕机了,想要通过这个巨大的aof文件去恢复数据,效率会很低。所有就出现了AOF重写。

rewrite原理
在这里插入图片描述

1、aof_rewrite_buf:(重写)缓冲区,aof_buf:写命令存放的缓冲区。

2、开始bgrewriteaof的时候,判断当前有没有bgsave/bgrewriteaof在执行,若有,则不执行。

3、主进程fork()出子进程,在执行fork()这个方法的时候是阻塞的,子进程创建完毕后就不阻塞了。

4、主进程fork完子进程后,主进程能继续接收客户端的请求,所有写命令依然是写入AOF文件缓冲区并根据配置文件的策略同步到磁盘的。

5、因为fork的子进程仅仅共享主进程fork()时的内存,后期主进程在更改内存数据,子进程是不可见的。因此Redis采取重写缓冲区(aof_rewite_buf)保存fork之后的客户端请求。防止新AOF文件生成期间丢失主进程执行的新命令所生成的数据。所以此时客户端的写请求不仅仅写入原来的aof_buf缓冲区,还写入了重写缓冲区。这就是我为什么用深蓝色的框给他两框到一起的原因。

6、子进程通过内存快照的形式,开始生成新的aof文件。

7、新aof文件生成完后,子进程向主进程发信号。

8、主进程收到信号后,会把重写缓冲区(aof_rewrite_buf)中的数据写入到新的AOF文件(主要避免这部分数据丢失)

9、使用新的AOF文件覆盖旧的AOF文件,且标记AOF重写完成。

2.6、RDB和AOF比较

在这里插入图片描述

3、Redis4.0混合持久化

重启Redis时,如果使用RDB来恢复内存状态,可能会导致丢失大量数据,这个也是RDB的一大缺点。

使用AOF日志重放,但是重放AOF日志性能相对RDB来说要慢很多,如果AOF文件很大,那么重放的时间就需要花费很长时间。Redis4.0结合RDB和AOF各自的优点,带来了一个新的解决持久化方案 - 混合持久化。

通过下面的配置可以开启混合持久化(必须先开启AOF)

# aof‐use‐rdb‐preamble yes

如果开启了混合持久化,AOF在重写时,不再是单纯将内存数据转换为RESP命令写入AOF文件,而是将重写这一刻之前的内存做RDB快照处理,并且将RDB快照内容和增量的AOF修改内存数据的命令存在一 起,都写入新的AOF文件,新的文件一开始不叫appendonly.aof,等到重写完新的AOF文件才会进行改名,覆盖原有的AOF文件,完成新旧两个AOF文件的替换。

于是在 Redis 重启的时候,可以先加载 RDB 的内容,然后再重放增量 AOF 日志就可以完全替代之前的 AOF 全量文件重放,因此重启效率大幅得到提升。

原理:

混合持久化也是通过bgrewriteaof完成的,所以基本流程和上述一样。不同的是当开启混合模式时,fork出的子进程先将共享的内存副本全量以RDB的方式写入aof。这样提高了速度也极大的缩小了aof文件(毕竟都是二进制)。写完还是通知主进程,然后再将重写缓冲区的内容以AOF方式写入到文件,然后替换旧的aof文件。也就是说这种模式下的aof文件发生rewrite后前半部分是rdb格式(REDIS开头的二进制数据),后半部分是正常的aof追加的命令(重写缓冲区里的)

混合持久化AOF文件结构如下:

在这里插入图片描述

1、混合持久化的优点:

混合持久化结合了RDB持久化和AOF持久化的优点,采取了rdb的文件小易于灾难恢复,同时结合AOF,增量的数据以AOF方式保存了,数据更少的丢失。

Redis持久化底层原理详解_redis bgsave原理 优点RDB是一个紧凑压缩的二进制文件,存储效率较高RDB内部存储的是redis在某个时间点的数据快照,非常适合用于数据备份,全量复制等场景RDB恢复数据的速度要比AOF快很多应用:服务器中每X小时执行bgsave备份,并将RDB文件拷贝到远程机器中,用于灾难恢复。缺点RDB方式无论是执行指令还是利用配置,无法做到实时持久化,具有较大的可能性丢失数据,在这里有人说,把RDB持久化的频率调高一点不久可以吗?save 1 1。 阅读详情

相关推荐

简单了解Redis,及其持久化机制之AOF和RDB模式

一个分布式缓存系统,初学者可以认为是一个独立于Python应用之外的字典。除了缓存功能,还有数据库MQ的特性。缓存将用户需要的数据放到离用户最近的地方,提供访问速度,特别是访问频繁的热点数据,可以节省不必要的计算访问消耗(计算 、网络传输、内存占用、数据库资源占用)MySQL是一个关系型数据库,能够保证数据库事务的ACID(原子性、一致性、隔离性、持久性)四个特性的数据库系统,需要通过SQL语句进行访问操作Redis属于NoSQL数据库范围,既不需要通过SQL语句访问的数据库。NoSQL数据库还包括:Ela

weixin_44691253的博客 1335

Redis高可用之持久化

1.Redis复制的原理和优化 1.1 Redis单机的问题 1.1.1 机器故障 在一台服务器上部署一个Redis节点,如果机器发生主板损坏,硬盘损坏等问题,不能在短时间修复完成,就不能处理Redis操作了,这就是单机可能存在的问题 同样的,服务器正常运行,但是Redis主进程发生宕机事件,此时只需要重启Redis就可以了。如果不考虑在Redis重启期间的性能损失,可以考虑Redis的单机部署 Redis单机部署出现故障时,把Redis迁移到另一台服务器上,此时需要把发生故障的Redis中的数据同步到新部

qq_40907977的博客 1035

从MC到DC:三维重建算法的核心原理与实战对比

本文深入对比了三维重建领域两大经典算法Marching Cubes(MC)与Dual Contouring(DC)的核心原理与实战表现。MC算法原理直观、实现简单,但存在特征丢失和二义性问题;DC算法通过求解二次误差函数(QEF)和利用法向量信息,能更好地保留模型的尖锐特征,但计算更复杂。文章结合医学影像处理实例,为开发者根据速度、精度和特征保真度需求选择合适算法提供了清晰指南。

weixin_29251131的博客 1031

Redis的RDB持久化bgsave的基本流程

简述Redis的RDB持久化的一些底层流程(图解)

weixin_73077810的博客 2621

UE5 VlcMedia 插件编译与流媒体播放实战

本文详细介绍了在虚幻引擎5中编译并集成VlcMedia插件以解决流媒体播放难题的实战指南。针对UE5不再默认支持Win32 API导致的编译错误,文章提供了核心的构建配置文件修改步骤,并指导如何启用插件、创建VLC媒体播放器,最终成功播放如.m3u8等格式的网络直播流或点播视频。

weixin_29013129的博客 338

基于Java的高校学生信息管理系统的设计与实现(论文+源码)

可以对本系统的数据进行良好的封装,Java可以对不想被访问的数据进行良好的隐藏,具备平台无关性,可移植,更加可靠与安全,具备多线程支持,进行网络交互更容易。它支持本系统的B/S模式。开发效益方面,本系统一旦开发成功并且面向社会,就会让大多数的学生教师体会到便利办公的乐趣,随之促进提高本系统的使用率和经济利润,所以在经济方面,对于零成本开发且高利润的学生管理系统是可行的。学生可以在学生端进行选课,查看自己的成绩,教师可以在教师端查看所任课程的选课情况,对学生成绩进行录入,对所任的课程进行结课等操作。

2402_82389843的博客 1090

Redis高可用之持久化_redis-rdb-bgsave

SAVE创建RDB文件的速度会比BGSAVE快,SAVE可以集中资源来创建RDB文件如果数据库正在上线当中,就要使用BGSAVE如果数据库需要维护,可以使用SAVE命令3.1.3 自动创建RDB文件打开Redis的配置文件/etc/redis.confsave 900 1自动持久化配置解释:save 900 1表示:如果距离上一次创建RDB文件已经过去的900秒时间内,Redis中的数据发生了1次改动,则自动执行BGSAVE命令。

2401_84254296的博客 894

Fedproto:原型聚合的联邦学习框架

文中说明,联邦学习通过计算传递梯度聚合模型时,客户端之间的异构性通常会阻碍模型优化收敛和泛化性能。故本文提出新的FedProto框架,将梯度替换成为原型,通过计算、聚合从不同客户端收集到的本地原型,然后将全局原型发送回所有客户端,以规范本地模型的训练。对每个客户机进行局部训练的目的是最小化对本地数据的分类损失,同时保持生成的本地原型足够接近相应的全局原型(损失函数最小+正则)。什么是原型?文中提到:“

weixin_47754029的博客 2649

Redis第5讲——RDB、AOF和混合持久化机制

我们知道Redis是内存数据库,它把数据都存储在了内存中,如果Redis服务器出现了意外,比如宕机、断电等情况,那么内存中的数据就会全部丢失。所以必须有一种机制可以把内存中的数据保存到磁盘里面,为了解决这个问题,Redis提供了RDB和AOF两种持久化机制,这也是Redis的重要特性之一。在开启混合持久化的情况下,AOF重写时会把Redis的持久化数据,以RDB的格式写入到AOF文件的开头,之后的数据再以AOF的格式追加到文件的末尾。

让~学习~成为一种习惯(橡 皮 人の技术博客) 4720

AI Agent开发大全第一课-AI是什么以及如何使用AI

近年来,人工智能的迅猛发展引发了广泛的关注,尤其是“大模型”这一概念越来越深入人心。大模型,顾名思义,通常指的是那些拥有大量参数、能够处理复杂任务的机器学习模型。与传统小模型相比,大模型在数据处理、信息理解和生成等方面表现更加出色。为了理解为什么现在的AI被称为大模型,我们需要深入探讨几个关键因素。立角色是指在提示词中清晰地界定交互双方的身份。明确用户希望模型扮演的角色,可以帮助模型更准确地理解上下文和用户需求。

打造全国最全的AI Agent开发知识领域的博客 1406

ESP32开发进阶:1.接入文心一言

ESP32开发进阶:接入文心一言大模型,串口对话

qq_53529450的博客 1431

【Redis】Redis持久化机制,RDB和AOF

Redis 的持久化机制和是保证数据不丢失的核心功能,但两者的实现原理、性能开销和适用场景差异显著。把一次性保存成一个,默认文件名dump.rdb。

2301_78725423的博客 1273

手把手教你学Simulink——光伏储能系统双向DC-AC逆变器恒功率控制(PQ控制)仿真

本文详细介绍了光伏储能系统中双向DC-AC逆变器的恒功率控制(PQ控制)仿真方法。主要内容包括:1)PQ控制原理及其在光伏满发和储能充放电中的应用;2)系统架构设计,重点推导了功率到dq电流的数学映射关系及电流内环控制算法;3)Simulink建模步骤,涵盖功率电路搭建、PLL设计、电流参考转换等关键环节;4)仿真结果分析,验证了系统在10kW光伏满发和-5kW储能充电模式下的稳态精度和动态切换性能;5)工程实践建议,包括数字控制延迟补偿、低电压穿越处理等实际问题解决方案。该指南为新能源并网系统的功率精准控

MHD0815的博客 424

【Redis】深入理解 Redis 持久化机制 —— RDB 和 AOF

虽然 Redis 是一个内存数据库,但由于各种原因,如 Redis 服务器的重启、意外崩溃等,内存中的数据可能会丢失。为了确保数据的持久性和可靠性,Redis引入了持久化机制,允许将数据定期保存到磁盘中,以便在下次启动 Redis 时能够恢复原来的数据到内存中。 Redis 的持久化机制是 Redis 数据库的一个重要组成部分,它允许将内存中的数据以不同的方式写入磁盘,以防止数据丢失。这对于许多应用场景非常关键,特别是需要长期保存数据或具有高可用性要求的系统。

qq_61635026的博客 7058

OSCP-Challenge 2 - Relia

使用andrea:PasswordPassword_6登录远程桌面,在c盘根目录下发现一个计划任务的ps,文件,修改执行的exe位木马,获取到milana用户的反弹shell。,发现开放了一个8000端口,但是我们外部是访问不到的,它对应的页面是/var/www/internal/,这个目录下的文件我们是可以访问的,把这个文件打个包放到本地分析下。其中数据的可以直接连接mssql,但是端口是49965,不过在数据库中没发现什么可用的信息,但是可以修改密码直接进后台,这个可以先放放。

羽的博客 7762

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【Redis】持久化机制--RDB和AOF

文章介绍了Redis的两种持久化机制以及其详细的流程、细节问题。

关关的博客 2659

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Redis 中的 RDB 和 AOF 持久化机制

Redis 的持久化功能是区别于 Memcached 显著特性,数据持久化可以保证系统在发生宕机和重启后数据不会丢失,对于 redis 这种存储在内存中的数据库显得尤为重要。在 Redis 4.0 以前数据持久化的方式主要有两种RDB(Redis DataBase)快照方式: 它是将某一时刻的内存数据以二进制的方式写入磁盘,默认保存文件为 dump.rdbAOF(Append Only File)文件追加方式:它是指将所有的操作命令,以文本的形式追加到文件中。默认保存文件是 appendonly.aof。

hello_1566的博客 1206

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【Redis】持久化—RDB和AOF机制

Redis中RDB和AOF持久化机制!!!

qq_55119554的博客 1534

Redis 持久化机制 RDB 和 AOF 区别

Redis 是一个开源的内存数据结构存储系统,广泛应用于缓存、会话存储、实时分析等场景。虽然 Redis 本质上是内存数据库,但它支持持久化机制,将数据保存在磁盘中以防止数据丢失。在 Redis 中,主要有两种持久化机制:RDB(Redis 数据库快照)和 AOF(追加文件)。这两种持久化机制各有优缺点,适用于不同的使用场...

Java_fenxiang的博客 2035

【Redis系列】持久化机制详解(RDB和AOF)

我们已经知道对于一个企业级的redis架构来说,持久化是不可减少的,持久化主要是做灾难恢复,数据恢复,也可以归类到高可用的一个环节里面,比如你redis整个挂了,然后redis就不可用了,你要做的事情是让redis变得可用,尽快变得可用,重启redis,尽快让它对外提供服务。.........

少说,多做 1万+

Redis的持久化机制RDB和AOF详解

本文为您介绍redis的持久化机制以及持久化的选型。

weixin_43134177的博客 1116

【经验】Redis 持久化机制 RDB 和 AOF 区别

关于 RDB与AOF 也会经常在面试时被问到,结合自己做过的应用场景来分析和回答,会更有说服力,这会表现出你是如何善用技术的优势来解决问题,这是实战经验中的宝贵经验。关注威哥爱编程,一起卷它个底朝天。

2401_87705025的博客 2597

Redis的持久化:RDB和AOF机制

Redis 提供,它们在数据安全性、性能、恢复速度等方面有显著差异。为什么要进行持久化?如果是大数据量的恢复,会有下述的影响。

учёба 1335

Redis之持久化机制(RDB和AOF)

因为Redis是内存数据库,将自己的数据库状态都存在了内存中,如果不想办法将存在内存中的数据库状态保存到磁盘里,如果出现了断电或者服务器宕机的情况,那么在内存中的数据库状态也会消失不见。为了解决这个问题,Redis提供了两种解决方案:RDB和AOF。 RDB RDB持久化是通过快照方式来完成的。当达到触发条件时,Redis会自动将内存中所有数据以二进制方式生成一份副本并存储在硬盘上。 第一种是主动触发:指的是客户端执行save和bgsave命令会进行持久化 redis> SAVE OK 当sav

程铭程铭你快成名的博客 1万+

Redis之RDB和AOF持久化机制详解

我是方圆,励志成为一名优秀博主 方便浏览和索引 ↓1. RDB1.1 RDB实现过程1.2 RDB文件的生成机制1.3 RDB优缺点2. AOF2.1 AOF实现过程2.2 AOF文件生成条件2.3 AOF文件出现问题2.4 AOF优缺点3. RDB和AOF我们该如何进行选择参考 1. RDB 首先,我们必须清楚的一点,Redis是内存数据库,如果不进行持久化,服务器在宕机或退出的时候,数据...

方圆 Blog 1514

redis RDB和AOF持久化机制

目录redis持久化一、RDB1.1. 什么是RDB持久化1.2. RDB自动触发持久化原理1.3. RDB手动触发持久化原理1.3.1. save1.3.2. bgsave1.4. RDB持久化的优点/缺点1.5. redis.conf RDB持久化配置详解二、AOF2.1. 什么是AOF持久化2.2. AOF运行流程2.3. AOF的优点/缺点2.4. redis.conf AOF持久化配置详...

断橋殘雪的博客 1022
上一篇: Springcloud - Consul
下一篇: Redis - 主从复制
程序员老石
博客等级 码龄8年 286粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值