Home
Linux
Golang
MySQL
PHP
Other
Message
Redis持久化
创建日期:2019-12-20 18:31:44
更新日期:2020-11-03 11:40:53
栏目:
Other
浏览:422
# Redis开启持久化 Redis支持RDB和AOF两种方案来实现持久化,默认会开启RDB - RDB方式的持久化几乎不损耗Redis本身的性能,在进行RDB持久化时,Redis主进程唯一需要做的事情就是fork出一个子进程,所有持久化工作都由子进程完成 ## RDB方式 采用RDB持久方式,Redis会定期保存数据快照至一个rbd文件中,并在启动时自动加载rdb文件,恢复之前保存的数据。 默认的配置为: save 900 1 save 300 10 save 60 10000 意思为: 900秒检查一次,如果发生了1条以上的数据变更,则快照保存 300秒检查一次,如果发生了10条以上的数据变更,则快照保存 60秒检查一次,如果发生了10000条以上的数据变更,则快照保存 > 注:yum安装默认配置文件在 /etc/redis.conf,如果是自己编译安装的,自己找去吧 ## AOF 采用AOF持久方式时,Redis会把每一个写请求都记录在一个日志文件里。 在Redis重启时,会把AOF文件中记录的所有写操作顺序执行一遍,确保数据恢复到最新。缺点和优点这一看就很明确了吧! AOF默认是关闭的,如要开启,进行如下配置: `appendonly yes` Redis为此提供了三种fsync配置 - appendfsync no:不进行fsync,将flush文件的时机交给OS决定,速度最快 - appendfsync always:每写入一条日志就进行一次fsync操作,数据安全性最高,但速度最慢 - appendfsync everysec:折中的做法,交由后台线程每秒fsync一次 这样后期文件会越来越大,恢复时间也越来越长,咋办勒。 ## AOF rewrite功能 可以重写AOF文件,只保留能够把数据恢复到最新状态的最小写操作集。 auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb Redis在每次AOF rewrite时,会记录完成rewrite后的AOF日志大小,当AOF日志大小在该基础上增长了100%后,自动进行AOF rewrite。同时如果增长的大小没有达到64mb,则不会进行rewrite。
内容版权声明:本文为舒孝元原创文章,转载无需和我联系,但请注明来自
舒孝元博客:https://www.shuxiaoyuan.com/info/56
联系邮箱:sxy@shuxiaoyuan.com