Redis持久化之RDB
目录
一、原理:
二、触发机制
三、如何恢复
四、如何启用
五、总结
本篇着重记录下Redis下的持久化RDB(Redis Database)。
一、原理:
我们通俗的说法就是快照,即在某个时刻,按下快门,将数据记录下来,然后要恢复时直接拿着快照进行恢复就行。
其持久化快照保存过程如下图:
关键就是搞懂,在进行快照的过程中,redis的主进程会fork一个子进程出来,由子进程进行临时rdb文件的写入,从而不影响父进行的操作,因此,RDB相比于AOF的性能更高。
但机制本身决定了其的缺点,在断电时,会失去上次快照之后到断电时这个过程的数据,因此就要根据实际,去设置触发机制的参数了。
二、触发机制
那么RDB在什么情况下会触发快照呢?
RDB中save(即产生新的.rdb)文件的触发规则,只要下面3中规则满足,都会触发:
1、满足了.conf中配置的save规则(例如60秒修改了10次key)
2、执行flushdb 或flushall命令
3、退出redis时
满足以上任意一种条件后,就会生成dump.rdb文件
三、如何恢复
生成的dump.rdb文件会在什么情况下恢复,又是如何恢复的?
只要在redis的启动目录下存在dump.rdb文件,redis在启动时就会自己读取rdb文件
因而,redis的RDB持久化的恢复是自动化的,基本上不用我们去处理什么。
四、如何启用
redis的默认持久化方式就是RDB方式,在其执行目录下,可以看到redis.conf配置文件,
(windows系统下可能只有redis.windows-service.conf和redis.windows.conf,只需要将其中一个进行配置项加载即可)
window下要用命令指定配置文件:
redis-server.exe redis.windows.conf
如上图所示,其有默认保存机制,15分钟至少修改一个key;5分钟修改10个key;1恩中修改10000个key。
实际中,如果对业务的实时性要求较高,我们也可以加自己的业务规则,
例如10秒修改一次key,我们可以写:
save 10 1
另外还有一点配置要说明:rdb方式:默认开启数据压缩
rdbcompression yes
解说:配置存储至本地数据库时是否压缩数据,默认为yes。Redis采用LZF压缩方式,但占用了一点CPU的时间。若关闭该选项,但会导致数据库文件变的巨大。建议开启。
五、总结
优点:
- 适合大规模的数据恢复。
- 如果业务对数据完整性和一致性要求不高,RDB是很好的选择。
缺点:
- 最后一次的数据会丢失。
- 需要单独fork子进程,对内存要求高
所以在生成环境,我们可以定期对dump.rdb文件进行备份,用来处理突发的恢复数据的要求。
还没有评论,来说两句吧...