Redis 数据持久化的方案的实现

11 篇文章 0 订阅
7 篇文章 0 订阅

一、需要了解的基础

1、Redis实现数据持久化的两种实现方式:

RDB:指定的时间间隔内保存数据快照

AOF:先把命令追加到操作日志的尾部,保存所有的历史操作



二、RDB 实现 Redis数据持久化(默认方式)


1、编辑 redis.conf

注:使用whereis redis命令查看redis安装在哪个位置,然后进入redis安装目录的etc目录下,编辑redis.conf。


2、默认备份的时间间隔


3、默认备份的文件名称


4、默认备份的RDB文件位置



5、像这样,就是其中的备份文件



6、当然,也可以主动触发保存redis数据快照,操作如下


注:当然,如果是线上的redis要主动备份,建议使用bgsave命令,更多关于RDB的原理和使用 

http://www.chenxm.cc/post/526.html?segmentfault


7、缺点:

因为是特定条件下进行一次持久化(每隔一段时间),就可能会导致一旦redis崩溃,再次回复时,可能会导致部分数据丢失。

注:如果设置的备份时间间隔较短,比较耗服务器性能,如果设置的备份时间间隔较长,又可能会导致数据恢复时部分数据丢失。



三、AOF持久化方案

先把命令追加到操作日志的尾部,保存所有的历史操作。


1、相比于RDB持久化方案的优点:

(1)数据非常完整,故障恢复丢失数据少

(2)可对历史操作进行处理


2、如何开启AOF持久化模式

将redis.conf 配置文件中的appendonly 参数改为yes 后,则redis开始启动AOF数据持久化模式


设置AOF同步的方式,这里设置的默认的每秒同步一次



3、开启AOF同步模式后,备份文件是这样的


从上面可以看出,它记录了从我开启AOF后的所有操作命令


4、缺点

(1)因为AOF模式要把每一步redis命令都记录下来,所以就导致文件的体积会很大

(2)而且会导致速度低于RDB,并且恢复速度慢


四、RDB模式和AOF模式的恢复

Redis崩溃后,重启redis会自动找备份恢复文件,下图大致描述了redis重启后的过程。




总结:

在实际应用中,根据场景不同,选择的方式也不尽相同,各有优缺点。但我个人看法,RDB的快照方式相比于AOF的逐步记录模式要好一些。至于RDB丢数据的风险,我们完全可以通过控制备份的时间间隔来避免这个问题。当然,也是可以两种方式同时使用的,只是大多不会这么做。


修改Redis数据持久化可以通过以下几种方式实现: 1. RDB方式:Redis可以通过执行bgsave命令来创建一个子进程进行数据备份。子进程会将数据入一个临时文件,然后替换上一次备份好的文件。但是RDB方式无法实现实时持久化或秒级持久化,因为每次执行bgsave都需要执行fork操作创建子进程,频繁执行成本较高。此外,RDB是定时备份,如果在最后一次备份到下一次备份之间发生故障,会丢失这段时间内的修改。\[1\] 2. AOF方式:Redis还可以通过开启AOF(Append Only File)持久化实现数据持久化。AOF方式会将每个操作追加到AOF文件中,以保证数据持久化。可以手动开启AOF持久化方案数据会同时持久化到AOF文件和RDB文件,但是数据的恢复是从AOF文件中进行的。只有在关闭AOF持久化时,才会从RDB文件中恢复数据。\[2\] 综上所述,可以通过修改Redis的配置文件来选择使用RDB方式、AOF方式或同时使用两种方式进行数据持久化。 #### 引用[.reference_title] - *1* *3* [【Redis持久化操作](https://blog.csdn.net/Decade0712/article/details/128266318)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Redis数据持久化](https://blog.csdn.net/asmall_cat/article/details/124563812)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值