redis 持久化 RDB 与 AOF
相关概念:
RDB持久化是redis每隔一段时间就生成一次当前数据库的快照文件(dump.rdb)
AOF持久化是redis的每个写操作都保存到文件中(appendonly.aof)
相关配置:
RDB相关默认配置如下:
save 900 1 在900秒(15分钟)之后,至少有1个key发生了变化
save 300 10 在300秒(5分钟)之后,至少有10个key发生了变化
save 60 10000 在60秒(1分钟)之后,至少有10000个key发生了变化
AOF相关默认配置如下:
appendonly no 默认AOF持久化是关闭的,打开需修改为yes
appendfsync everysec 文件写入和同步的参数配置(ps:由于操作系统在写文件时会先把数据放入到内存缓冲区内,只有缓冲区被写满或者超过一定的时间才会把缓冲区的数据同步写入到文件中)
appendfsync参数有三种:always、everysec、no
always 将aof_buf缓冲区中的所有内容写入并同步到AOF文件
everysec 将aof_buf缓冲区中的所有内容写入到AOF文件,如果上次同步AOF文件的时间距离现在超过一秒钟,那么再次对AOF文件进行同步,并且这个同步操作是由一个线程专门负责执行的(默认配置)(推荐)
no 将aof_buf缓冲区中的所有内容写入到AOF文件,但并不对AOF文件进行同步, 何时同步由操作系统来决定
持久化文件载入过程:
如果同时使用RDB和AOF两种持久化机制,那么在redis重启的时候,会使用AOF来重新构建数据,因为AOF中的数据更加完整
AOF文件重写:
因为AOF持久化是通过保存被执行的写命令来记录数据库状态的,所以随着服务器运行时间的流逝,AOF文件中的内容会越来越多,文件的体积也会越来越大,如果不加以控制的话,体积过大的AOF文件很可能对Redis服务器、甚至整个宿主计算机造成影响,并且AOF文件的体积越大,使用AOF文件来进行数据还原所需的时间就越多。
redis的AOF文件重写机制通过把服务器内存中现存key的多条写命令合并成一条写命令来减少文件大小。
相关默认配置:
auto-aof-rewrite-percentage 100 百分比(是上次重写的1倍)
auto-aof-rewrite-min-size 64mb 文件要大于64M
版权声明: 本文为 InfoQ 作者【wjchenge】的原创文章。
原文链接:【http://xie.infoq.cn/article/2bf332a4c351207b7dfc8d582】。文章转载请联系作者。
评论