场景

Redis的持久化策略

持久化可以理解为存储,就是将数据存储到一个不会丢失的地方。

如果把数据存储在内存中,电脑关闭或者重启数据就会丢失,所以放在内存中的数据不是持久化的,而放在磁盘中就算是一种持久化。

Redis的数据存储在内存中,内存是瞬时的,如果linux宕机或者重启,又或者Redis崩溃或者重启,

所有的内存中数据就会丢失,为解决这个问题,Redis提供了两种机制对数据进行持久化存储,便于发生故障后能迅速恢复数据。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

RDB方式

RedisDatabase(RDB),就是在指定的时间间隔内将内存中的数据集快照写入磁盘,数据恢复时将快照文件直接再读到内存。

RDB保存了在某个时间点的数据集(全部数据)。存储在一个二进制文件中,只有一个文件,默认是dump.rdb。

RDB技术非常适合做备份,可以保存最近一个小时,一天,一个月的全部数据。保存数据是在单独的进程中写文件,

不影响Redis的正常使用,RDB恢复数据时比其他AOF速度快。

RDB方式配置实现

RDB方式的持久化,仅需在redis.conf文件中配置即可,默认配置是启用的。

Centos中Redis的下载编译与安装(超详细):

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103967334

Redis的启动和关闭(前台启动和后台启动):

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103972348

根据上面两篇博客来到Redis安装路径下配置文件redis-conf文件的位置,可以看到dump.rdb文件

 

 

然后对redis.conf配置文件进行编辑

 

 

然后往下找到SNAPSHOTTING,查找在注释开始和结束之间的关于RDB的配置说明。

1.配置执行RDB生成快照文件的时间策略。

对Redis进行设置,让它在"N秒钟内数据集至少有M个key改动"这一条件被满足时,自动保存一次数据集。

 

 

这里的默认配置

save 900 1
save 300 10
save 60 10000

就是说在900秒内有1个key被改动,300秒内有10个key被改动,60秒内有10000个key被改动。

2.dbfilename:设置RDB的文件名,默认文件名dump.rdb

 

 

3.dir :指定RDB文件的存储位置,默认是./ 当前目录

 

 

RDB方式总结

优点:

由于存储的是数据快照文件,恢复数据很方便,也比较快。

缺点:

1.会丢失最后一次快照以后更改的数据,如果你的应用能容忍一定数据的丢失,那么使用rdb

是不错的选择;如果你不能容忍一定数据的丢失,使用rdb就不是一个很好的选择。

2.由于需要经常操作磁盘,RDB会分出一个子进程。如果你的redis数据库很大的话,子进程占用比较多的时间,并且可能会

影响Redis暂停服务一段时间(毫秒级别),如果你的数据库超级大并且你的服务器的CPU比较弱,有可能会达到一秒。

AOF方式

Append-onlyFile(AOF),Redis每次接收到一条改变数据的命令时,它将把该命令写到一个

AOF文件中(只记录写操作,不记录读记录),当Redis重启时,它通过执行AOF文件中所有的命令来恢复数据。

AOF的数据持久化,仅需在redis.conf中配置即可。

配置项:

1.appendonly:默认是no,改为yes即开启了AOF持久化。

2.appendfilename :指定AOF文件名,默认文件名是appendonly.aof。

3.dir:指定RDB和AOF文件存放的位置。

4.appendfsync:配置向aof文件写命令数据的策略:

no:不主动进行同步操作,而是完全交由操作系统来做(即每30秒一次),比较快但不是很安全。

always:每次执行写入都会执行同步,慢一些但是比较安全。

everysec:没秒执行一次同步操作,比较平衡,介于速度与安全之间,这就是默认项。

posted on 2020-03-23 17:18  霸道流氓  阅读(336)  评论(0编辑  收藏  举报

Live2D