Redis持久化策略之Rdb和Aof

老服务器焕新记:在Dell R730上折腾Nvidia K80显卡的完整记录(含Anaconda环境配置) 本文详细记录了在Dell R730服务器上为Nvidia K80计算卡安装驱动、配置CUDA及Anaconda环境的完整过程。文章重点解决了老旧硬件与CentOS 7系统的兼容性问题,提供了从BIOS设置、驱动版本精准匹配到Python机器学习环境搭建的实战指南,旨在帮助读者低成本挖掘旧服务器的GPU计算潜力。 阅读详情

什么是Redis的持久化       

Redis本质上是一个在内存上的数据库,内存的数据变化是很快的,也容易发生丢失。比如突然的宕机会导致数据的不完整,甚至数据的丢失,当我们再次重启机器的时候,就需要获取原来的数据,否则会造成数据的丢失。Redis为我们提供了持久化的机制,最开始的时候,Redis服务提供四种持久化存储方案:RDB、AOF、虚拟内存(VM)和 DISKSTORE。虚拟内存(VM)方式,从Redis Version 2.4开始就被官方明确表示不再建议使用,Version 3.2版本中更找不到关于虚拟内存(VM)的任何配置范例。DISKSTORE方式,是从Redis Version 2.8版本开始提出的一个存储设想,到目前为止Redis官方也没有在任何stable版本中明确建议使用这用方式。目前使用的分别是RDB(Redis DataBase)和AOF(Append Only File)。持久化的时候会把数据保存在硬盘上,RDB持久化的默认文件为dump.rdb,aof持久化的默认文件后缀名为.aof。虽说两者同时都为持久化,但是本质上还是不同的,并且,在机器重启的时候,首先加载的是aof文件,但是这并不影响RDB和AOF同时共存。

RDB持久化

关于RDB的持久化方式,可以参考配置文件进行相关配置,RDB持久化的配置方式在SNAPSHOTTING (快照)目录下,具体如下:

################################ SNAPSHOTTING  ################################
#
# Save the DB on disk:
#   save <seconds> <changes>
#   Will save the DB if both the given number of seconds and the given
#   number of write operations against the DB occurred.
#   In the example below the behaviour will be to save:
#   after 900 sec (15 min) if at least 1 key changed
#   after 300 sec (5 min) if at least 10 keys changed
#   after 60 sec if at least 10000 keys changed
#   Note: you can disable saving completely by commenting out all "save" lines.
#   It is also possible to remove all the previously configured save
#   points by adding a save directive with a single empty string argument
#   like in the following example:
#   save ""  //如果想禁用RDB持久化的策略,只要不设置任何save指令,或者给save传入一个空字符串参 
               数也可以
//RDB是整个内存的压缩过的Snapshot,RDB的数据结构,可以配置复合的快照触发条件,这里的修改不包括 
  get
save 900 1  //15分钟内改了1次
save 300 10  //5分钟内改了10次
save 60 10000 //1分钟内改了1万次

# By default Redis will stop accepting writes if RDB snapshots are enabled
# (at least one save point) and the latest background save failed.
# This will make the user aware (in a hard way) that data is not persisting
# on disk properly, otherwise chances are that no one will notice and some
# disaster will happen.
# If the background saving process will start working again Redis will
# automatically allow writes again.
# However if you have setup your proper monitoring of the Redis server
# and persistence, you may want to disable this feature so that Redis will
# continue to work as usual even if there are problems with disk,
# permissions, and so forth.

stop-writes-on-bgsave-error yes  //当出现错误时停止持久化,如果配置成no,表示你不在乎数据不一 
                                   致或者有其他的手段发现和控制

# Compress string objects using LZF when dump .rdb databases?
# For default that's set to 'yes' as it's almost always a win.
# If you want to save some CPU in the saving child set it to 'no' but
# the dataset will likely be bigger if you have compressible values or keys.
rdbcompression yes //对于存储到磁盘中的快照,可以设置是否进行压缩存储。如果是的话,redis会采用
                    LZF算法进行压缩。如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能

# Since version 5 of RDB a CRC64 checksum is placed at the end of the file.
# This makes the format more resistant to corruption but there is a performance
# hit to pay (around 10%) when saving and loading RDB files, so you can disable it
# for maximum performances.
# RDB files created with checksum disabled have a checksum of zero that will
# tell the loading code to skip the check.
rdbchecksum yes  //在存储快照后,还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约
                   10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能
# The filename where to dump the DB
dbfilename dump.rdb 

# The working directory.
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
# The Append Only File will also be created inside this directory.
# Note that you must specify a directory here, not a file name.
dir ./

RDB持久化会在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里,Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失。

Fork的作用是复制一个与当前进程一样的进程。新进程的所有数据(变量、环境变量、程序计数器等)数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程,如果原进程所占内存相当庞大,那么就需要fork之后的进程所占内存问题,大致2倍的膨胀性需要考虑。

在持久化时可以通过配置文件来配置相应的持久化,如果需要马上进行持久化,则需要使用save命令或者BGSAVE命令,save时只管保存,其它不管,全部阻塞,BGSAVE:Redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。可以通过lastsave命令获取最后一次成功执行快照的时间,需要注意,执行flushall命令,也会产生dump.rdb文件,但里面是空的,无意义。

RDB持久化的优点:

适合大规模的数据恢复,对数据完整性和一致性要求不高,非常适用于备份,全量复制等场景,Redis加载RDB恢复数据远远快于AOF的方式

RDB持久化的缺点:

在一定间隔时间做一次备份,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改,Fork的时候,内存中的数据被克隆了一份,大致2倍的膨胀性需要考虑,RDB方式数据没办法做到实时持久化/秒级持久化。因为bgsave每次运 行都要执行fork操作创建子进程,属于重量级操作,频繁执行成本过高。并且RDB不适合实时持久化

RDB总结

AOF持久化机制

AOF以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作,AOF的主要作用 是解决了数据持久化的实时性,AOF全称是Append Only File,从字面上理解就是“只进行增加的文件”。AOF方式的核心设计思量可以总结为一句话:忠实记录Redis服务启动成功后的每一次影响数据状态的操作命令,以便在Redis服务异常崩溃的情况出现时,可以按照这些操作命令恢复数据状态。既然要记录每次影响数据状态的操作命令,就意味着AOF文件会越来越大!这是必然的。还好Redis为AOF提供了一种重写AOF文件的功能,保证了AOF文件中可以存储尽可能少的操作命令就能保证数据恢复到最新状态,这个功能被称为日志重写功能

############################## APPEND ONLY MODE ###############################
# By default Redis asynchronously dumps the dataset on disk. This mode is
# good enough in many applications, but an issue with the Redis process or
# a power outage may result into a few minutes of writes lost (depending on
# the configured save points).
# The Append Only File is an alternative persistence mode that provides
# much better durability. For instance using the default data fsync policy
# (see later in the config file) Redis can lose just one second of writes in a
# dramatic event like a server power outage, or a single write if something
# wrong with the Redis process itself happens, but the operating system is
# still running correctly.
# AOF and RDB persistence can be enabled at the same time without problems.
# If the AOF is enabled on startup Redis will load the AOF, that is the file
# with the better durability guarantees.
# Please check http://redis.io/topics/persistence for more information.

appendonly yes  //启动:设置Yes,修改默认的appendonly no,改为yes

# The name of the append only file (default: "appendonly.aof")
appendfilename "appendonly.aof"  //Aof保存的是appendonly.aof文件

# The fsync() call tells the Operating System to actually write data on disk
# instead of waiting for more data in the output buffer. Some OS will really flush
# data on disk, some other OS will just try to do it ASAP.
# Redis supports three different modes:
# no: don't fsync, just let the OS flush the data when it wants. Faster.
# always: fsync after every write to the append only log. Slow, Safest.
# everysec: fsync only one time every second. Compromise.
# The default is "everysec", as that's usually the right compromise between
# speed and data safety. It's up to you to understand if you can relax this to
# "no" that will let the operating system flush the output buffer when
# it wants, for better performances (but if you can live with the idea of
# some data loss consider the default persistence mode that's snapshotting),
# or on the contrary, use "always" that's very slow but a bit safer than
# everysec. More details please check the following article:
# http://antirez.com/post/redis-persistence-demystified.html
# If unsure, use "everysec".appendfsync always appendfsync everysec 

appendfsync no  //Always:同步持久化 每次发生数据变更会被立即记录到磁盘  性能较差但数据完整性比 
                 较好
                //Everysec:出厂默认推荐,异步操作,每秒记录   如果一秒内宕机,有数据丢失
                //no: 从不同步
# When the AOF fsync policy is set to always or everysec, and a background
# saving process (a background save or AOF log background rewriting) is
# performing a lot of I/O against the disk, in some Linux configurations
# Redis may block too long on the fsync() call. Note that there is no fix for
# this currently, as even performing fsync in a different thread will block
# our synchronous write(2) call.
# In order to mitigate this problem it's possible to use the following option
# that will prevent fsync() from being called in the main process while a
# BGSAVE or BGREWRITEAOF is in progress.
# This means that while another child is saving, the durability of Redis is
# the same as "appendfsync none". In practical terms, this means that it is
# possible to lose up to 30 seconds of log in the worst scenario (with the
# default Linux settings).
# If you have latency problems turn this to "yes". Otherwise leave it as
# "no" that is the safest pick from the point of view of durability.

no-appendfsync-on-rewrite no  //重写时是否可以运用Appendfsync,用默认no即可,保证数据安全性。

# Automatic rewrite of the append only file.
# Redis is able to automatically rewrite the log file implicitly calling
# BGREWRITEAOF when the AOF log size grows by the specified percentage.
# This is how it works: Redis remembers the size of the AOF file after the
# latest rewrite (if no rewrite has happened since the restart, the size of
# the AOF at startup is used).
# This base size is compared to the current size. If the current size is
# bigger than the specified percentage, the rewrite is triggered. Also
# you need to specify a minimal size for the AOF file to be rewritten, this
# is useful to avoid rewriting the AOF file even if the percentage increase
# is reached but it is still pretty small.
# Specify a percentage of zero in order to disable the automatic AOF
# rewrite feature.

auto-aof-rewrite-percentage 100  //设置重写的基准值,代表当前AOF文件空间 
                     (aof_current_size)和上一次重写后AOF文件空间(aof_base_size)的比值。
auto-aof-rewrite-min-size 64mb  //设置重写的基准值,表示运行AOF重写时文件最小体积,默认 为 
                                  64MB。

# An AOF file may be found to be truncated at the end during the Redis
# startup process, when the AOF data gets loaded back into memory.
# This may happen when the system where Redis is running
# crashes, especially when an ext4 filesystem is mounted without the
# data=ordered option (however this can't happen when Redis itself
# crashes or aborts but the operating system still works correctly).
# Redis can either exit with an error when this happens, or load as much
# data as possible (the default now) and start if the AOF file is found
# to be truncated at the end. The following option controls this behavior.
# If aof-load-truncated is set to yes, a truncated AOF file is loaded and
# the Redis server starts emitting a log to inform the user of the event.
# Otherwise if the option is set to no, the server aborts with an error
# and refuses to start. When the option is set to no, the user requires
# to fix the AOF file using the "redis-check-aof" utility before to restart
# the server.
# Note that if the AOF file will be found to be corrupted in the middle
# the server will still exit with an error. This option only applies when
# Redis will try to read more data from the AOF file but not enough bytes
# will be found.

aof-load-truncated yes

AOF持久化的Rewrite机制

AOF采用文件追加方式,文件会越来越大为避免出现此种情况,新增了重写机制,当AOF文件的大小超过所设定的阈值时,Redis就会启动AOF文件的内容压缩,只保留可以恢复数据的最小指令集.可以使用命令bgrewriteaof,原理就是:AOF文件持续增长而过大时,会fork出一条新进程来将文件重写(也是先写临时文件最后再rename),遍历新进程的内存中数据,每条记录有一条的Set语句。重写aof文件的操作,并没有读取旧的aof文件,而是将整个内存中的数据库内容用命令的方式重写了一个新的aof文件,这点和快照有点类似。重写后的AOF文件可以变小是因为:进程内已经超时的数据不再写入文件,旧的AOF文件含有无效命令,重写使用进程内数据直接生成,这样新的AOF文件只保留最终数据的写入命令。多条写命令可以合并为一个,为了防止单条命令过大造成客户端缓冲区溢出,对于list、set、hash、zset等类型操作,以64个元素为界拆分为多条,AOF重写降低了文件占用空间,除此之外,另一个目的是:更小的AOF 文件可以更快地被Redis加载

触发AOF重写

手动使用命令:bgrewriteaof

根据配置文件中配置的参数:auto-aof-rewrite-min-size和auto-aof-rewrite-percentage判断是否进行重写

AOF持久化的优点

可以根据实际设置不同的同步策略,更加的灵活,可以设置:每修改同步:appendfsync always   同步持久化 每次发生数据变更会被立即记录到磁盘  性能较差但数据完整性比较好,每秒同步:appendfsync everysec    异步操作,每秒记录   如果一秒内宕机,有数据丢失,解决了数据持久化的实时性

缺点

相同数据集的数据而言aof文件要远大于rdb文件,恢复速度慢于rdb,Aof运行效率要慢于rdb,每秒同步策略效率较好,不同步效率和rdb相同

总结

无论是使用RDB或者AOF方式进行持久化,如果恢复过程中出现错误,可以使用Redis-check-aof /Redis-check-rdb对文件进行修复,RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储,AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾.Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大,如果你只希望你的数据在服务器运行的时候存在,你也可以不使用任何持久化方式.,同时开启两种持久化方式时,当redis重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整,RDB的数据不实时,同时使用两者时服务器重启也只会找AOF文件。那要不要只使用AOF呢?作者建议不要,因为RDB更适合用于备份数据库(AOF在不断变化不好备份),快速重启,而且不会有AOF可能潜在的bug,留着作为一个万一的手段。

因为RDB文件只用作后备用途,建议只在Slave上持久化RDB文件,而且只要15分钟备份一次就够了,只保留save 900 1这条规则。如果Enalbe AOF,好处是在最恶劣情况下也只会丢失不超过两秒数据,启动脚本较简单只load自己的AOF文件就可以了。代价一是带来了持续的IO,二是AOF rewrite的最后将rewrite过程中产生的新数据写到新文件造成的阻塞几乎是不可避免的。只要硬盘许可,应该尽量减少AOF rewrite的频率,AOF重写的基础大小默认值64M太小了,可以设到5G以上。默认超过原大小100%大小时重写可以改到适当的数值。如果不Enable AOF ,仅靠Master-Slave Replication 实现高可用性也可以。能省掉一大笔IO也减少了rewrite时带来的系统波动。代价是如果Master/Slave同时倒掉,会丢失十几分钟的数据,启动脚本也要比较两个Master/Slave中的RDB文件,载入较新的那个。新浪微博就选用了这种架构

 

PyMuPDF为PDF文件添加注释 我将介绍如何使用PyMuPDF库来为PDF文件添加注释,包括文本注释、高亮注释、下划线注释等15种注释的使用方法。 阅读详情

相关推荐

BDD测试之Behave使用入门

BDD测试(Behavior-Driven Development Testing)是一种基于“行为驱动开发”(BDD)理念。

想要成为酷盖但是失败的小明 580

redis持久化的方式AOF和RDB的相关概述

1 、概述 redis是一种noslq(not only sql),那么他必定需要持久化,AOF和RDB就是redis持久化的两种方式。 2、RDB 2、1 什么是RDB? 在指定的时间间隔内将内存中的数据集快照写入到磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读取到内存中。 Redis会单独创建(fork)一个子进程进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件,整个过程中,主进程是不尽兴任何IO操作的,这就确保了极高的性能

sober 300

Rokid眼镜高精度图像识别的五大工程破局点

图像识别是AR交互的基础能力,其核心在于将现实图像映射为可计算的数字特征,并通过几何建模解算空间姿态。在专用AR眼镜场景中,该过程面临光学畸变、传感器时序错位、低延迟跟踪与人因适配等复合挑战。尤其在工业现场,Rokid Max系列的鱼眼镜头畸变、IMU-视觉异步采样、窄FOV下快速眼动等物理约束,使传统基于AR Foundation或OpenCV的识别方案失效。本文聚焦真实部署中的关键瓶颈,涵盖实时反畸变纹理渲染、原生SDK直调优化、端侧轻量CNN模型(TinyImageNet-Rokid)、IMU-视觉紧

weixin_33681778的博客 697

【Redis 实战】dump.rdb、appendonly.aof 文件路径

本文是实战性文章,带大家一起找找 `dump.rdb` 和 `apendonly.aof` 文件的路径。 redis 服务在启动时有两种方式,既可以指定配置文件,也可以不指定配置文件。

持之以恒 5634

百度慧眼人口位置数据:从原理到实战的GIS处理全流程

本文详细解析百度慧眼人口位置数据的处理全流程,从基本原理到实战应用。通过空间网格划分、终端数量统计等技术手段,百度慧眼数据能准确反映人群分布特征。文章涵盖坐标系转换、核密度分析、热力图制作等GIS处理技巧,并分享商业选址、城市规划等典型业务场景的解决方案,帮助读者高效利用这一数据资源。

weixin_30872157的博客 531

易智联LM401模块学习(一)——初识Lora

Lora

weixin_46046597的博客 1053

Redis持久化的两种方式:RDB与AOF(详解)

Redis为什么要持久化机制,RDB和AOF两者有什么特点,两者如何抉择?

PeaK欢迎大家评论留言,一起交流Java技术 6157

北斗导航 | SPP、RTK、RTD、PPP-RTK、PPP算法原理,公式及完整matlab代码

开发参考:SPP适合入门学习GNSS定位原理和最小二乘。RTK是工程高精度定位主流方案,但依赖基站。PPP适合无基站区域的广域高精度应用。PPP-RTK是融合两者优点的新一代技术,但系统复杂度最高。· 代码资源:raPPPid(VieVS PPP)是功能完整的MATLAB开源PPP工具箱,支持多系统PPP-AR。MATLAB GPS Toolbox 提供从SPP到PPP的完整功能实现。· 实际应用:农业自动驾驶、无人机航测通常使用网络RTK;大地测量、地壳形变监测常采用PPP事后处理;

尘世冰封的专栏 820

Redis进阶(4)——结合redis.conf配置文件深入理解 Redis两种数据持久化方案:RDB和AOF

1.Redis数据持久化的两种方式,RDB和AOF; 2.RDB采用二进制存储,速度快,但数据可能会丢失; 3.AOF命令追加,可读性强,数据准确,但文件较大,效率低; 4.结合redis.conf深入理解两种持久化方案;

Arya的博客,专注后端领域 716

移植Google Gemini Nano到RK3588 NPU,实现高效边缘推理

在嵌入式 AI 开发中,大家常常会遇到模型在硬件平台上运行时出现性能瓶颈的问题,比如推理速度慢、功耗过高,这严重影响了应用的实时性和稳定性 ,导致性能瓶颈,无法满足如智能安防、工业检测等场景的实时性需求。为了解决这些问题,我们可以将轻量模型移植到具有强大算力的硬件平台上。本文将手把手教你将 Google Gemini Nano(或类似轻量模型)移植到 RK3588 NPU,充分发挥 RK3588 NPU 的 6Tops 算力,实现高效的模型推理,提升嵌入式系统的 AI 处理能力。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 293

Transformer实战(33)——高效自注意力机制

在本节中,我们学习了如何在硬件资源受限的情况下减轻运行大模型的负担,介绍了高效的稀疏 Transformer 模型,通过近似技术(如 Linformer、BigBird 和 Performer) 用稀疏矩阵替代全自注意力矩阵。并观察它们在各种基准测试中的表现,例如计算复杂度和内存复杂度。结果表明,这些方法可以在不牺牲性能的情况下将平方级复杂度降低到线性复杂度。

盼小辉丶的博客 3020

Redis详解(四)RDB持久化

前面我们说过,Redis 相对于Memcache 等其他的缓存产品,有一个比较明显的优势就是 Redis 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。这几种丰富的数据类型我们花了两篇文章进行了详细的介绍,接下来我们要介绍 Redis 的另外一大优势——持久化。   由于 Redis 是一个内存数据库,所谓内存数据库,就是将数据库...

傅红雪的专栏 377

带洞多边形如何分成凸多边形集合,对多边形进行凸分解?

摘要: 凸分解是计算几何中的经典问题,分为三角化和凸分解两种方法。三角化将带洞多边形转换为简单多边形并分割为三角形,常用算法包括耳剪法、单调多边形三角化等。凸分解则生成更少但更大的凸多边形,常用Hertel-Mehlhorn算法或基于凹点的递归切割。实际应用中建议使用CGAL、Poly2Tri等成熟库处理。三角化适合图形渲染,凸分解更适用于物理引擎和路径规划。关键步骤包括数据校验、选择合适的算法及后处理优化。

插件开发 353

Redis的持久化策略-AOF和RDB(详细图解)

图解Redis持久化策略,带你快速入门。Redis的持久化策略-AOF和RDB(详细图解)

一年,我很需要这一年 1620

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

IEM模型,地表粗糙度模拟

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

Redis持久化策略:RDB 和 AOF

Hello,大家好,我是Go。在现代应用程序的开发中,数据的稳定性和持久性是至关重要的。大多数应用选择将数据存储在内存中以提高性能,但一旦发生断电或及其故障,内存数据就会丢失。在这方面,Redis作为一种高性能的内存数据库,通过其持久化策略为我们提供了强大的解决方案。本文将探讨Redis的持久化策略,揭示其如何确保数据在内存中的稳固存储。到此,对于RDB和AOF这两个持久化策略也就阐述完毕了。希望这些能够帮助大家,解决大家的问题。大家一起进步!笔者文章如有不足,欢迎随时指出!

Auguest0820H的博客 991

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Redis持久化策略:RDB和AOF的优缺点和选型

本文介绍了Redis的两种持久化策略:RDB和AOF,分析了它们的原理、优缺点和选型建议,希望能对读者使用Redis有所帮助。

TaloyerG的博客 1860

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【Redis笔记】一起学习Redis | 聊聊Redis的持久化策略,AOF和RDB

一起学习Redis,探讨Redis的RDB,AOF及混合式的数据持久化方案 !

长路漫漫的歇脚处 1148

Redis AOF 和 RDB 持久化策略原理

一、数据持久化 默认情况下 Redis 的数据都是保存在内存中,为避免 Redis 进程意外退出而导致数据丢失的问题,Redis 提供了 RDB 和 AOF 两种方式来实现数据的持久化存储。 二、RDB 机制 RDB 机制是以指定的时间间隔将 Redis 中的数据生成快照并保存到硬盘中,它更适合于定时备份数据的应用场景。可以通过手动或者自动的方式来触发 RDB 机制: 2.1 手动触发 可以通过...

黑白影的博客 647

Redis持久化策略有哪些——AOF和RDB分别的优缺点

由于redis是一个内存数据库,所有的数据都是保存在内存当中的,内存当中的数据极易丢失,所以redis的数据持久化就显得尤为重要,在redis当中,提供了两种数据持久化的方式,分别为RDB以及AOF,且Redis默认开启的数据持久化方式为RDB方式。

qq_40585384的博客 770

《Redis数据永不消逝:探究AOF和RDB持久化策略》

为了解决这个问题, Redis 增加了一个 AOF 重写缓存,这个缓存在 fork 出子进程之后开始启用,Redis 主进程在接到新的写命令之后,除了会将这个写命令的协议内容追加到现有的 AOF 文件之外,还会追加到这个缓存中。不过,使用子进程也有一个问题需要解决:因为子进程在进行 AOF 重写期间,主进程还需要继续处理命令,而新的命令可能对现有的数据进行修改,这会让当前数据库的数据和重写后的 AOF 文件中的数据不一致。Redis数据量存储过大,性能突然下降,fork 时间过长阻塞主进程则只开启AOF。

成功最快的秘诀: 抱团取暖 。 1万+

Redis的RDB和AOF持久化策略的区别

aof,rdb是两种 redis持久化的机制。用于crash后,redis的恢复。 rdb的特性如下: Code: fork一个进程,遍历hash table,利用copy on write,把整个db dump保存下来。 save, shutdown, slave 命令会触发这个操作。 粒度比较大,如果save, shutdown, slave 之前crash了,则中间的操作没办法恢复。 ...

caodongfang126的博客 275

Redis100篇 - Redis持久化怕踩坑 RDB和AOF的优缺点+选择策略

Redis持久化策略:RDB与AOF的深度对比与选择指南 本文深入探讨Redis的两种持久化机制——RDB和AOF。RDB通过周期性快照保存数据,具有恢复速度快、文件紧凑等优点,但存在数据丢失风险;AOF则记录每个写操作命令,数据安全性更高但文件体积较大。文章详细分析了两者的工作原理、配置方式及适用场景,并介绍了Redis 4.0+引入的混合持久化模式,帮助开发者根据业务需求选择最合适的持久化策略。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

【分享】Redis的持久化策略(RDB和AOF)和适用场景

AOF持久化是将Redis中的所有写命令以追加方式写入一个文件中。在Redis配置文件中设置AOF文件的保存方式,可以实现自动保存,也可以通过命令手动创建AOF文件。RDB持久化是将Redis中的数据保存到一个二进制文件中。可以在Redis配置文件中设置保存RDB文件的时间间隔,以实现自动保存。可以手动触发RDB快照或者通过设置定时快照的方式自动触发快照操作。以上命令可以关闭持久化,也可以通过修改参数来切换持久化策略。RDB持久化是将内存中的数据快照保存到。使用RDB和AOF两种持久化方式。

码农阿福的博客 829

redis学习-27- Redis数据备份和还原及RDB/AOF持久化策略配置

redis学习-27- Redis数据备份和还原及RDB/AOF持久化策略配置

时光 1367

Redis持久化策略RDB和AOF

Redis持久化策略RDB和AOF

Kris_zwl的博客 968

redis持久化策略RDB和AOF

Redis 持久化:redis 提供了多种不同级别的持久化方式:一种是RDB,另一种是AOF.

劝君与我同风起,扶摇直上九万里 992
上一篇: SpringBoot整合Redis并自定义Redis对象的序列化
下一篇: 面试题总结一
Mr.姚先森
博客等级 码龄11年 26粉丝 32原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值