码迷,mamicode.com
首页 > 其他好文 > 详细

Redis持久化

时间:2020-09-11 16:01:20      阅读:36      评论:0      收藏:0      [点我收藏+]

标签:简单   进制   line   性能   生成   避免   数据   lin   退出   

我们都知道Redis是个内存数据库,所有的数据都存储在内存中。一旦服务器上Redis进程退出,数据库中的数据就会丢失。这个时候我们就要对数据做持久化了,持久化简单的理解就是将内存中的数据做个备份。Redis的持久化有两种方法,即RDB持久化和AOF持久化。可以通过修改 redis.conf 来进行配置

 

技术图片

 

 

 

 

 

redis是如何存储数据的,看图做理解

技术图片

 

 

 

 

RDB持久化

RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照,默认开启该模式.RDB配置方式
默认情况下,是快照RDB的持久化方式,将内存中的数据以快照的方式写入二进制文件中,默认的文件名是dump.rdb
redis.conf默认配置:

save 900 1
save 300 10
save 60 10000

 配置含义: 900秒内,如果超过1个key被修改,则发起快照保存 300秒内,如果超过10个key被修改,则发起快照保存 60秒内,如果1万个key被修改,则发起快照保存 默认配置不方便看效果,可将快照频率设大一点,在redis.conf中增加一行:

save 10 1


保存后,启动redis服务端和客户端。在客户端输入命令:

技术图片

 

 

输入完,发现dump.rdb文件的修改日期变了,并且redis服务端增加了保存日志

技术图片

 

 

接下来,重启redis服务端和客户端,看数据是否真的持久化了:

技术图片

 

 


到这里,说明使用RDB快照持久化成功了。自己试试
如何关闭 rdb 模式

save ""

# save 900 1  
# save xxx
# save 60 10000


RDB缺点

因为是特定条件下进行一次持久化(每隔一段时间),就可能会导致一旦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持久化

标签:简单   进制   line   性能   生成   避免   数据   lin   退出   

原文地址:https://www.cnblogs.com/myJuly/p/13587799.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!