redis学习系列——redis持久化

Posted lvwei093

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis学习系列——redis持久化相关的知识,希望对你有一定的参考价值。

1、写操作的流程

2、RDB快照-redis的第一个持久化策略

第一种是以快照的形式持久化到本地磁盘(RDB文件)。

持久化策略是:

1.配置(save N M)在N秒内,redis至少发生M次修改,则redis持久化快照到本地磁盘。

  • after 900 sec (15 min) if at least 1 key changed

2.手动持久化:手动save或bgsave快照。

  • 工作原理:当redis进行持久化时,redis会fork出一个子进程,然后在子进程中循环所有的数据,将数据写入一个临时RDB文件中;当子进程完成写操作时,会将原来的RDB替换掉。

RDB持久化常用配置项

dbfilename dump.rdb
dir ./
save <seconds> <changes>

不足:一旦数据库出现问题(如直接关闭服务器),那我们的RDB文件中保存的数据并不是全新的,从上次RDB文件生成到Redis停机这段时间的数据全部丢掉了。 对于可以忍受的业务,推荐使用RDB方式进行持久化,因为开启RDB的代价并不高。但是对于对数据安全性要求极高的应用,Redis引入了:AOF日志。

3、AOF日志

AOF日志,全称append only file,是一个追加写入的日志文件,是可识别的纯文本,内容就是一个个的redis标准命令。

AOF重写:AOF rewrite
Redis AOF持久化常用配置项
appendonly yes
appendfilename appendonly.aof

appendfsync everysec 三种不同的刷新模式
appendfsync always
appendfsync no

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
RDB和AOF持久化的区别

RDB特性:

fork一个进程,遍历Hashtable,利用copy-on-write,把整个db dump保存下来。
save,shutdown,slave之前crash,则中间的操作无法恢复。

AOF特性:

把写操作指令,持续的写入一个类似日志文件。
粒度较小,crash后,只有crash前没有来得及做日志的操作无法恢复。

二者区别:

AOF是持续用日志记录写操作,crash后利用日志恢复;
RDB是平时写操作时不触发写,只有达到写操作节点或手动提交save命令或关闭命令时,才会触发备份操作。

以上是关于redis学习系列——redis持久化的主要内容,如果未能解决你的问题,请参考以下文章

Redis数据库系列Redis持久化

跟着“乐哉”学习redis系列教程-Redis的订阅

分布式缓存技术redis学习系列——redis高级应用(集群搭建集群分区原理集群操作)

redis的两种持久化方案

redis源码学习持久化机制:RDB

redis学习