redis系列-redis的持久化
2014-04-21 15:10
288 查看
redis对数据的持久化有两种方式:RDB(快照保存)和AOF(命令日志)。
触发:满足“N 秒内数据集至少有 M 个改动”,或使用save/bgsave命令。save同步阻塞客户端,bgsave异步后台存储。
工作:
Redis 调用forks,产生子进程,同时拥有父进程和子进程
子进程将数据集写入到一个临时 RDB 文件中
当子进程完成对新 RDB 文件的写入时,Redis 用新 RDB 文件替换原来的 RDB 文件,并删除旧的 RDB 文件
配置:save <seconds> <changes>,如save 60 1000,60s内至少有1000个key set,才会保存快照
优点:适合于保存某个时间点或时间段的数据集;后台保存,不影响前端响应;恢复数据时,速度快。
缺点:redis以外终止时,会丢失配置时间内的数据;改动平凡时,fork子进程比较耗时。
触发:通过配置指定每秒,或每次修改时,调用fsync保存命令
配置:
工作:
当AOF文件比较大时,可以使用BGREWRITEAOF,重写AOF文件,只保留能恢复数据的最小命令集,以减少文件大小。
Redis 执行 fork() ,现在同时拥有父进程和子进程。
子进程开始将新 AOF 文件的内容写入到临时文件。
对于所有新执行的写入命令,父进程一边将它们累积到一个内存缓存中,一边将这些改动追加到现有 AOF 文件的末尾,这样样即使在重写的中途发生停机,现有的 AOF 文件也还是安全的。
当子进程完成重写工作时,它给父进程发送一个信号,父进程在接收到信号之后,将内存缓存中的所有数据追加到新 AOF 文件的末尾。
Redis 原子地用新文件替换旧文件,之后所有命令都会直接追加到新 AOF 文件的末尾。
优点:redis异常时,丢失数据少;aof文件可以重写,减少日志大小;aof文件易懂,可以人工修改。
缺点:相同的数据集,aof文件比rdb文件大;重启时,恢复速度慢;根据fsync策略,aof速度可能慢于rdb,频繁append。
补:
同时开启两种持久化方式,redis会使用aof文件来恢复原始数据;
通常使用rdb备份数据库,因为便于移动备份,恢复快。
RDB
介绍:将内存快照保存到磁盘,dump.rdb二进制文件触发:满足“N 秒内数据集至少有 M 个改动”,或使用save/bgsave命令。save同步阻塞客户端,bgsave异步后台存储。
工作:
Redis 调用forks,产生子进程,同时拥有父进程和子进程
子进程将数据集写入到一个临时 RDB 文件中
当子进程完成对新 RDB 文件的写入时,Redis 用新 RDB 文件替换原来的 RDB 文件,并删除旧的 RDB 文件
配置:save <seconds> <changes>,如save 60 1000,60s内至少有1000个key set,才会保存快照
优点:适合于保存某个时间点或时间段的数据集;后台保存,不影响前端响应;恢复数据时,速度快。
缺点:redis以外终止时,会丢失配置时间内的数据;改动平凡时,fork子进程比较耗时。
AOF
介绍:Append-only File,将修改命令追加到日志文件末尾appendonly.aof,redis重启时通过执行AOF中的命令来恢复数据集。触发:通过配置指定每秒,或每次修改时,调用fsync保存命令
配置:
#打开aof appendonly yes #fsync策略 #appendfsync always appendfsync everysec #appendfsync no
工作:
当AOF文件比较大时,可以使用BGREWRITEAOF,重写AOF文件,只保留能恢复数据的最小命令集,以减少文件大小。
Redis 执行 fork() ,现在同时拥有父进程和子进程。
子进程开始将新 AOF 文件的内容写入到临时文件。
对于所有新执行的写入命令,父进程一边将它们累积到一个内存缓存中,一边将这些改动追加到现有 AOF 文件的末尾,这样样即使在重写的中途发生停机,现有的 AOF 文件也还是安全的。
当子进程完成重写工作时,它给父进程发送一个信号,父进程在接收到信号之后,将内存缓存中的所有数据追加到新 AOF 文件的末尾。
Redis 原子地用新文件替换旧文件,之后所有命令都会直接追加到新 AOF 文件的末尾。
优点:redis异常时,丢失数据少;aof文件可以重写,减少日志大小;aof文件易懂,可以人工修改。
缺点:相同的数据集,aof文件比rdb文件大;重启时,恢复速度慢;根据fsync策略,aof速度可能慢于rdb,频繁append。
补:
同时开启两种持久化方式,redis会使用aof文件来恢复原始数据;
通常使用rdb备份数据库,因为便于移动备份,恢复快。
相关文章推荐
- redis 中文存储乱码问题
- redis源码解读之内存管理————zmalloc文件
- 清理redis缓存
- Linux 下 Redis 安装详解
- Redis2.8.7配置文件说明
- CentOS6.5下安装Redis2.8.6和phpredis2.2.4扩展
- Centos系统安装 phpredis 扩展
- Centos系统安装 phpredis 扩展
- 在centos6.3用yum安装redis
- 在centos6.3用yum安装redis
- 深入剖析Redis AOF持久化策略
- Redis配置文件参数说明
- 深入剖析Redis RDB持久化策略
- Redis-benchmark使用总结
- Ubuntu 安装 Redis
- Java中使用Jedis操作Redis
- Redis中常用命令
- Redis中常用命令
- Redis安装及主从配置
- Redis安装及主从配置