场景
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:没秒执行一次同步操作,比较平衡,介于速度与安全之间,这就是默认项。