
Redis持久化机制
除了满足save规则会触发RDB持久化外,执行flushall命令或客户端退出redis时,也会持久化。把dump.rdb放在config get dir的指定目录下,启动就会恢复其中的数据
Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能
建议使用appendsync everysec,让Redis每经过1秒钟同步一次AOF文件,性能几乎不会受到影响,并且最多丢失1秒之内产生的数据。当硬盘忙于执行写入操作的时候,Redis 还会优雅的放慢自己的速度以便适应硬盘的最大写入速度
扩展:Redis4.0开始支持RDB和AOF的混合持久化(默认关闭,可以通过配置aof-use-rdb-preamble开启)。AOF重写的时候就直接把RDB的内容写到AOF文件开头,这样做的好处是可以结合RDB和AOF的优点,快速加载同时避免丢失过多的数据。当然缺点也是有的,AOF里面的 RDB部分就是压缩格式不再是AOF格式,可读性较差
发布日期:2021-05-10 03:26:47
浏览次数:31
分类:精选文章
本文共 877 字,大约阅读时间需要 2 分钟。
1、快照RDB
默认使用,性能高
备份某个时间点上内存中数据的副本,不仅可以本地持久化,还可以传给其他服务器用来创建相同数据的服务器副本,完成Redis集群的搭建。每经过规定时间检查是否有指定数量的key发生改变,如果达到则进行快照持久化


2、只追加文件AOF
实时性好
开启后每执行一条会更改Redis中的数据的命令,Redis就会将该命令写入硬盘中的AOF文件,比快照的方式实时性更好
修复appendonly.aof文件:redis-check-aof --fix appendonly.aof

AOF持久化缺陷:AOF文件默认无限追加,导致文件体积太大
解决方案:重写/压缩AOF,用户可以向Redis发送 BGREWRITEAOF命令 ,这个命令会通过fork一个子进程来移除AOF文件中的冗余命令来重写(rewrite)AOF文件来减小AOF文件的体积

发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月14日 23时35分21秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Redis-day2-五种数据结构类型与数据持久化AOF+RDB
2021-05-10
IOS开发Swift笔记16-错误处理
2021-05-10
Java 天气预报WebService
2021-05-10
mysql里Date类型的处理
2021-05-10
redis中RDB和AOF的区别
2021-05-10
内核线程、轻量级进程、用户线程的区别和联系
2021-05-10
《STM32从零开始学习历程》——CAN相关结构体
2021-05-10
原生Javascript实现New方法
2021-05-10
Tomcat中jdk版本与项目版本不一致造成404错误以及Eclipse修改jdk版本
2021-05-10
配置SpringMVC中的视图解析器
2021-05-10
杭电OJ-2034(C)
2021-05-10
this.$router.push不起作用(this指向错误)
2021-05-10
Sublime安装px转rem插件
2021-05-10
IDEA上传Jar
2021-05-10
SpringBoot工程临时加一个分页的yml文件没有生效
2021-05-10
flume使用中的一些常见错误解决办法 (地址已经使用)
2021-05-10
OpenCV camshift目标追踪
2021-05-10
Redis缓存穿透和缓存雪崩
2021-05-10
day04_CSS选择器
2021-05-10