【Redis学习总结】4. Redis的持久化

无人机飞控技术最详细解读 已剪辑自: https://zhuanlan.zhihu.com/p/64519280[导读]被称作是“飞行器的大脑”的飞控到底是什么?以前,搞无人机的十个人有八个是航空、气动、机械出身,更多考虑的是如何让飞机稳定飞起来、飞得更快、飞得更高。如今,随着芯片、人工智能、大数据技术的发展,无人机开始了智能化、终端化、集群化的趋势,大批自动化、机械电子、信息工程、微电子的专业人材投入到了无人机研发大潮中,几年的时间让无人机从远离人们视野的军事应用飞入了寻常百姓家、让门外汉可以短暂的学习也能稳定可靠的飞行娱乐。不可 阅读详情

一、RDB(Redis DataBase)

1. 定义

(1)定义

  • 在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里。

(2)流程

  • Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能。

2. fork

fork的作用是复制一个与当前进程一样的进程。新进程的所有数据(变量、环境变量、程序计数器等)数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程。

 

3. 如何触发RDB快照

(1)配置文件中默认的快照配置

60s以内key的改变超过10000次,或是300s内key的改变超过10次,或是900s内超过一次,满足任意条件就会触发RDB

 

(2) save 或是 bgsave

 上面的配置文件是要在60s过后或是3min过后或是15min过后才会进程备份,使用下面的2个命令可以立即备份!

  • Save:save时只管保存,其它不管,全部阻塞
  • BGSAVE:Redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。

 

(3)flushall、shutdown

  • flushall命令,也会产生dump.rdb文件,但里面是空的,无意义
  • shutdown:执行shutdown也会产生dum.rdb文件

 

4. 如何恢复

将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可 (我个人是安装在/usr/local/bin)

 

5.优劣势

优势:(1)适合大规模的数据恢复,对数据完整性和一致性要求不高

           (2)整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能。

 

劣势:(1)在一定间隔时间做一次备份,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改

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

 

【拓展】 SNAPSHOTTING快照

1. save 秒钟 写操作次数

2. 禁用

 

3. stop-writes-on-bgsave-error

 

4.  rdbcompression

5.  rdbchecksum

6  dbfilename (rdb 保存的是dump.rdb文件)

7.  dir

 

二、AOF(Append Only File)

 

1. 定义

以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作

 

2. 配置位置

 

3. AOF启动/修复/恢复

启动:修改默认的appendonly no,改为yes

正常恢复:将有数据的aof文件复制一份保存到redis的安装目录 ,然后重启redis

异常恢复: redis-check-aof --fix AOF文件  修复有问题的AOF文件,然后进行正常恢复

 

4. rewrite

 (1) 定义

 AOF采用文件追加方式,文件会越来越大为避免出现此种情况,新增了重写机制,当AOF文件的大小超过所设定的阈值时,Redis就会启动AOF文件的内容压缩,只保留可以恢复数据的最小指令集.可以使用命令bgrewriteaof

 (2)重写原理

AOF文件持续增长而过大时,会fork出一条新进程来将文件重写(也是先写临时文件最后再rename),遍历新进程的内存中数据,每条记录有一条的Set语句。重写aof文件的操作,并没有读取旧的aof文件,而是将整个内存中的数据库内容用命令的方式重写了一个新的aof文件,这点和快照有点类似

 (3)触发机制

 Redis会记录上次重写时的AOF大小,默认配置是当AOF文件大小是上次rewrite后大小的一倍且文件大于64M时触发

 

5. 优劣势

优势:(1)每秒同步:appendfsync everysec    

           (2)异步操作,每秒记录   如果一秒内宕机,有数据丢失

 

劣势:(1)相同数据集的数据而言aof文件要远大于rdb文件,恢复速度慢于rdb

          (2)aof运行效率要慢于rdb,每秒同步策略效率较好,不同步效率和rdb相同

 

【拓展】APPEND ONLY MODE追加

 

1.  appendonly

2.  appendfilename (Aof保存的是appendonly.aof文件)

3. appendfsync

     always:同步持久化 每次发生数据变更会被立即记录到磁盘  性能较差但数据完整性比较好

     everysec:出厂默认推荐,异步操作,每秒记录   如果一秒内宕机,有数据丢失

     no:不同步

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

5. auto-aof-rewrite-min-size:设置重写的基准值 (64M)

6. auto-aof-rewrite-percentage:设置重写的基准值(100)

 

三、总结

 

1. 两种方式简介

  • RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储
  • AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾.Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大

 

2. 只做缓存

   如果你只希望你的数据在服务器运行的时候存在,你也可以不使用任何持久化方式.

 

3. 同时开启两种持久化方式

在这种情况下,当redis重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整.

RDB的数据不实时,同时使用两者时服务器重启也只会找AOF文件。那要不要只使用AOF呢?
作者建议不要,因为RDB更适合用于备份数据库(AOF在不断变化不好备份),快速重启,而且不会有AOF可能潜在的bug,留着作为一个万一的手段。

 

4.性能建议


因为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文件,载入较新的那个。新浪微博就选用了这种架构

Python 爬虫实战:共享单车数据采集全流程与市场洞察深度剖析 本文介绍了如何利用Python爬虫技术获取和分析共享单车运营数据。文章从项目背景出发,详细阐述了系统架构设计,包括数据抓取、清洗存储、分析和可视化模块。通过Scrapy、BeautifulSoup等工具实现数据采集,使用Pandas进行数据清洗,并借助Matplotlib进行可视化分析。实战部分展示了爬虫代码示例和城市分布、使用频率等分析案例。最终指出数据驱动分析有助于了解行业现状和市场趋势,未来可结合机器学习等方法进行深入洞察。该技术方案为共享单车行业研究提供了有效的数据支持。 阅读详情

相关推荐

B站李沐讲论文笔记AlexNet

B站李沐讲论文笔记AlexNet

夏知识不进脑子薇的博客 790

windows-redis关闭/开启持久化

一.关闭持久化 Redis是默认开启RDB的,AOF则是默认关闭的。相当于初始安装的Redis是持久化的。 如何关闭redis持久化?我的需求是只把redis当作缓存来用,所以持久化到硬盘对我的需求来说没有意义。 修改redis配置文件,redis.conf 第115行左右。 1.注释掉原来的持久化规则 #save 900 1 #save 300 10 #save 60 10000 2.设置为空 save “” 然后重启redis服务即可。 重点:此时你会发现按上述说明配置了,但持久化依然存在。 *关闭失效

我这孩子从小记性就不好,什么东西都要写下来才放心 2610

【AI实战派】从零部署YOLOv8:香橙派AIpro边缘端目标检测全流程解析

本文详细解析了在香橙派AIpro边缘设备上从零部署YOLOv8目标检测模型的全流程。内容涵盖硬件开箱、环境搭建、模型转换(ONNX到昇腾OM格式)以及编写Python推理脚本,并提供了性能优化与实战技巧,帮助开发者高效实现实时边缘AI应用。

weixin_29183637的博客 330

Redis持久化中的RDB(Redis DataBase)持久化

文章目录Redis持久化中的RDB(Redis DataBase)持久化为什么要掌握Redis的持久化?什么是RDB持久化RDB持久化生成的持久化文件的名字和位置设置RDB触发快照的规则测试RDB持久化机制RDB持久化的触发机制a.当满足redis配置文件中SNAPSHOTTING快照中的规则时会触发快照机制b.当执行flushall命令和flushdb命令之前会触发快照机制c.退出redis的时候会触发redis的快照机制如何恢复rdb文件中的内容RDB持久化的优缺点优点缺点 Redis持久化中的RDB(

xzy的博客 1020

pytorch-cifar100学习资料汇总 - 基于PyTorch的CIFAR-100图像分类实践

pytorch-cifar100是一个基于PyTorch实现CIFAR-100数据集图像分类的开源项目。该项目实现了多种经典的深度学习网络模型,如ResNet、DenseNet、VGG等,为开发者提供了在CIFAR-100数据集上进行图像分类实验的代码范例。pytorch-cifar100项目为我们提供了在CIFAR-100数据集上进行图像分类实验的完整代码实现。无论你是想要学习PyTorch的使用,还是研究不同网络模型在CIFAR-100上的表现,这个项目都是一个很好的起点。

helloaiworld的博客 1125

功率开关管驱动串扰(Crosstalk):深度解析与优化方案

介绍了功率开关器件驱动串扰产生机理,并整理了常见的工程应用优化措施

qq_38326420的博客 559

解决redis shutdown报错;配置RDB持久化

配置redis日志文件位置 redis关闭的命令是 redis-cli -a abc123456 shutdown 结果报错了 [/]$ redis-cli -a abc123456 shutdown (error) ERR Errors trying to SHUTDOWN. Check logs. 让我查看日志,结果你默认都不记录日志的…… 好吧,自己设置一下日志文件,修改co...

还没见过大海 1498

芯片标称具备8kVESD能力却在8kV测试中失效?

芯片级ESD(HBM模型)与系统级ESD(IEC 61000-4-2)存在本质差异:

硬核科技 647

Redis学习小记4 - Redis持久化

Redis学习小记4 - Redis持久化 参考链接:详解Redis中两种持久化机制RDB和AOF Redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失。幸好Redis还为我们提供了持久化的机制,分别是RDB(Redis DataBase)和AOF(Append Only File)。 RDB持久化机制 RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘。也是默认的持久化方式,这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名.

weixin_47490310的博客 216

addBumpConnectTargetConstraint 命令详解

本文介绍了Cadence Innovus中用于倒装芯片设计的addBumpConnectTargetConstraint命令的核心功能和使用方法。该命令主要用于为凸点(Bump)添加连接目标约束,通过绑定实例、引脚/网络和端口号等属性,实现凸点与电源/信号网络的精准映射。文章详细解析了命令语法结构、参数说明及使用场景,包括必选参数(指定凸点方式)、分支选择(实例连接或电源连接类型)以及互斥参数(引脚名与网络名)等重要注意事项,并提供了典型应用示例。该命令特别适用于倒装芯片设计中凸点与PG网络、IO实例的连接

u013620135的博客 395

ctle电路求帮忙分析低中高频调节原理,搭好了电路该怎样调节参数?

🏆本文收录于专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家!持续更新中,up!up!up!!

**My Coding Family** 1129

redis学习笔记(4)之redis持久化案例

redis持久化案例持久化操作细节重启加载的选择持久化的选择持久化配置方案企业级的持久化的配置策略数据备份方案AOF常用配置总结rdb & aof备份rdb备份的完成依据shell脚本的了解效果及思路说明须知的操作生成秘钥免密登录方法通过ssh-copy-id的方式通过scp将内容写到对方的文件中测试实现效果源码 内容来源为六星教育,这里仅作为学习笔记 持久化操作细节 重启加载的选择 AOF 和 RDB 文件都可以用于服务器重启时的数据恢复 这是redis 4.0之前的选择方式 这是redis 4

小鱼AS的博客 816

1、信息与物理世界:“It from Bit”还是“Bit from It”?

这篇博文探讨了物理学与信息理论之间的深刻联系,从惠勒提出的“It from Bit”概念出发,讨论了信息是否是物质世界的基础,或者物质是否是信息的来源。文章回顾了2013年举办的征文竞赛以及众多学者对这一问题的不同观点,涵盖了量子理论、热力学、计算机科学、黑洞物理以及时空本质等多个领域。同时,文章还分析了信息理论在哲学层面的含义,并展望了其在未来理论、实验和应用研究中的潜力与方向。

water的专栏 293

与时俱进,深入原理学习——Redis 4.0新持久化机制:混合持久化

众所周知,Redis是一个内存数据库。但它与其它内存数据库(如memcache)等有一个很大的区别,就是Redis可以持久化到磁盘。有了持久化方案,Redis就可以对数据进行备份、恢复、复制。 Redis提供了两种持久化方案:RDB和AOF。在Redis 4.0中,提供了一个新特性:两者的混合持久化。下面将介绍Redis的各种持久化方案的原理和配置。 使用info persistence命令可...

chenrui310的博客 1167

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

redis学习笔记4(redis持久化)

Redis持久化-RDB rdb方式的持久化是通过快照完成的,当符合一定条件时redis会自动将内存中的所有数据执行快照操作并存储到硬盘上。默认存储在redis根目录的dump.rdb文件中。(文件名在配置文件中dbfilename) ################################ SNAPSHOTTING ################################

sias1991的专栏 561

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

redis6学习4-事务和持久化

redis6学习4-事务和持久化 redis事务 redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。 redis事务的主要作用就是串联多个命令防止别的命令插队。 事务命令 从输入Multi命令开始,输入的命令都会依次进入命令队列中,但不会执行,直接输入Exec后,redis会将之前的命令队列中的命令依次执行。 组队的过程中可以通过discard来放弃组队。 事务的错误处理 事务冲突问题 悲观锁 乐观锁 LU

qq_40093255的博客 161

Redis学习笔记(4)-持久化机制

官方推荐两个都启用。如果对数据不敏感(允许数据有部分丢失),可以选单独用 RDB。不建议单独用 AOF,因为可能会出现 Bug。如果只是做纯内存缓存,可以都不用。

TinkerBell的学习笔记 340

Redis 学习笔记 Day4(SpringBoot整合Redis的快捷配置)(Redis持久化)

Redis集合与SpringBoot 首先Redis在Java上的原生API是Jedis ,它的使用方式和Redis的命令行基本一致 需要注意的是,如果写事务的话,需要自行用tryCatch来阻拦运行时的报错,保证事务的原子性 Redis通过Spring-data-redis来集合到SpringBoot中 【源码分析】:在中,SpringFramwork有一个AutoConfig包,在里面能够找到所有导入Jar包的配置类 通过点击RedisAutoConfiguration里面能够进入

纯纯打工人 360

《Redis核心技术与实战》学习总结(4)之持久化机制

因此,如果采用先写日志方式,那么日志中就有可能会记录错误的命令,导致Redis在使用AOF恢复数据的时候,可能会出错。,即如果AOF需要一次记录的命令太多,Redis会进行重写:Redis根据现状创建一个新的AOF文件,它会读取所有键值对,然后对每一个键值对用一条命令记录它的写入。因为,Redis的单线程设计,日志中的命令只能一条一条按顺序执行,“重放”过程会变慢。但是,当数据量越来越大之后,做全量快照的过程中写入磁盘的时间会逐渐增大,全量数据越多,RDB文件就会越大,往磁盘上写数据的时间开销也就越大。

FeelTouch Labs 151

Redis学习篇4_Redis配置文件、RDB和AOF持久化、发布订阅

目录 Redis配置文件 Redis持久化 一、Redis配置文件 基本配置项 单位:大小写不敏感 包含:支持对个配置文件 网络bind:可以绑定本地、远程的地址,表示支持连接的ip地址 保护模式protected 端口设置port 通用配置 后台进程dameonize no 是否开启、配置文件的pid文件pidfile(后台运行的进程文件) 日志级别loglevel(debug、verbose、notice默认、warning)以及输出日志的文件名logfile 数据库数量.

xiaosi的博客 426

Redis学习笔记4--持久化机制与分区

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33726943的博客 915

学习日志day65(2021-11-04)(1、Redis事务:秒杀案例 2、Redis持久化之RDB 3、Redis持久化之AOF 4、Redis主从复制)

学习内容:学习Redis(Day65) 1、Redis事务:秒杀案例 2、Redis持久化之RDB 3、Redis持久化之AOF 4、Redis主从复制 1、Redis事务:秒杀案例 (1)使用工具ab模拟测试,CentOS6 默认安装,CentOS7需要手动安装。 联网:yum install httpd-tools vim postfile 模拟表单提交参数,以&符号结尾;存放当前目录。内容:prodid=0101& 使用命令进行高并发提交测试 ab -n 2000 -c 200 -k

huzige_的博客 356

Redis的持久化机制是怎样的?

一、问题解析典型回答Redis提供了两种持久化的机制,分别是RDB和AOF。RDBRDB是将Redis的内存中的数据定期保存到磁盘上,以防止数据在Redis进程异常退出或服务器断电等情况下丢失。RDB的优点是:快照文件小、恢复速度快,适合做备份和灾难恢复。RDB的缺点是:定期更新可能会丢数据AOFAOF是将Redis的所有写操作追加到AOF文件(Append Only File)的末尾,从而记录了Redis服务器运行期间所有修改操作的详细记录。

sinat_53467514的博客 1246

Redis 中的 持久化 RDB-AOF混合持久化

们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

2401_84254196的博客 435

Redis持久化

Redis的持久化方式 Redis的持久化有两种方式:RDB和AOF,redis默认采用的是RDB的方式。 RDB 在默认配置中,Redis将内存数据库快照保存在名字为dump.rdb的二进制文件中。 可以配置持久化策略:save N M,让redis在“N秒内至少有M个改动”才会触发一次rdb持久化操作。 例如redis的默认策略有: save 900 1 -- 900秒内至少有一个改动 save 300 10 -- 300秒内至少有10个改动 save 60 10000 -- 60秒内至少

不积硅步,无以至千里 3万+

Redis两种持久化方式

Redis两种持久化方式

水w的博客 1976

Redis --- Redis如何做持久化

Redis如何做持久化 一共三种 一、RDB(快照)持久化:保存某个时间点的全量数据快照 redis.conf save 60 1 代表Redis在60秒内写入一条数据那么进行快照 stop-writes-on-basave-error yes 代表当备份进程出错的时候,主进程就停止写入新的操作了。这样是为了保护持久化数据一致性的问题。 rdbcompression yes 表示...

xinbumi的博客 2万+
上一篇: 【Redis学习总结】3.解析配置文件 redis.conf
下一篇: 【Redis学习总结】5. Redis的事务
Rita楠神
博客等级 码龄9年 27粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值