redis持久化(rdb/aof)

本文介绍了Redis的两种持久化方式:RDB快照和AOF日志。RDB通过创建快照来备份数据,适用于大规模数据恢复;AOF则记录所有写操作以确保数据完整性。文章还探讨了这两种方式的优缺点及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、rdbredis database):在指定的时间间隔内将内存中的数据集快照写入到本地磁盘,也就是行话讲的snapshot快照,它恢复时是将快照文件直接读到内存中。

1、备份:内存到磁盘。恢复:快照文件从磁盘读回到内存。

2redis会单独创建(fork)一个子进程来进行持久化,先将数据写入到一个临时文件(dump.rdb)中,待持久化过程都结束了,在用这个临时文件替换上次持久化好的文件。新的替换旧的,在整个过程当中,主进程不进行任何io操作,这就确保了极高的性能。如果需要进行大规模的数据恢复,且对于数据的精度要求不高,那rdb方法比aof更加高效。rdb的缺点是最后一次持久化后的数据可能丢失。

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

4、如何触发rdb快照:

(1):配置文件中默认的快照配置,冷拷贝后重新使用,可以cp dump.rdb dump_new.rdb

(2):命令save或者bgsave save:只管保存,其他不管,全部阻塞 bgsave:redis在后台异步进行快照操作,快照同时还可以响应客户端的请求。可以通过lastsave命令获取最后一次成功执行快照的时间

(3):Flushall也会产生dump.rdb文件,但里面是空的,无意义。

4、数据如何恢复:将备份文件移动到redis的安装目录并启动服务即可。

5、优势:

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

(2):对数据的一致性和完整性要求不高。

6、劣势:

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

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

二:aof(append only file):以日志的形式来记录每个写操作,将redis执行过的所有写指令记录下来(读操作不记录),只有追加文件但不可以修改文件,redis启动之初会读取该文件重新构建数据,换言之,redis启动的话就是根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作(其实更狠的是redis的主从复制,读写分离)。

1、appendonly.aof文件损坏,则不能启动redis修复appendonly.aof文件,redis-check-aof --fix appendonly.aof。

2、appendonly.aof文件和dump.rdb可以同时存在,这种情况下,redis首先会去加载appendonly.aof文件。

3、Aof的配置策略:

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

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

No

4、aofrewrite重写:aof采用文件追加的形式,文件会越来越大为了避免出现这种情况,新增了重写机制,当aof文件的大小超过所设定的阈值时,redis就会启动aof文件的内容压缩。

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

触发重写机制:redis会记录上次重写时的aof的文件的大小,默认配置是当aof文件大小是上次rewrite后大小的一倍并且文件大于64m时触发。

conf文件中的配置:auto-aof-rewrite-percentage 设置重写的百分比

Auto-aof-rewrite-min-size 64mb 设置重写的基准值

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

5、优势:

(1)、同步持久化,每发生数据变更时会被立即记录到磁盘中,性能较差但数据性比较狠。

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

(3)、不同步。

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

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

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

9、同时开启:redis重启的时候会首先加载aof文件,因为通常情况下aof文件保存的数据集要比rdb保存的数据集完整。也不要只使用aof,因为rdb更适合于备份数据库(aof在不断的变化不好备份)。

10、性能建议:

(1)、因为rdb只用作后备用途,建议只在slave上持久化rdb文件,而且只要15分钟备份一次即可。

(2)如果Enable Aof,好处是在最恶劣的情况下只会丢失不会超过1秒的数据,启动脚本较简单只load自己的aof文件就可以了。代价一是带来了持续的io,二是aof rewrite的最后将rewrite过程中产生的数据写到新文件造成的阻塞几乎是不可避免的。只要硬盘许可,应该减少重写的频率,比如aof重写默认的基础值太小了,可以设置到5G以上。

(3)、如果不Enable Aof,仅依靠Master-Slave Replication实现高可用也可以。能省掉一大笔的io操作。代价是如果Master-Slave同时倒掉,会丢失十几分钟的数据,启动脚本也需要比较两个Master-Slave中的rdb文件,加载比较新的那一个。

内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值