IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Redis持久化之AOF -> 正文阅读

[大数据]Redis持久化之AOF

介绍

AOF(Append Only File)是以日志的形式来记录每个写操作(增量保存),将redis执行过程中的所有写指令记录下来(读记录不记录),只许追加文件但不可以改写文件,redis启动之后会读取该文件重新构建数据,或者说,redis重启的话就根据日志文件的内容将写指令从前到后执行一次完成数据的恢复工作。

修改配置项

打开/etc/redis.conf文件,修改内容如下:

appendonly yes
appendfilename "appendonly.aof"

启动服务后,会自动生成aof文件,如下:

注意:当AOF和RDB同时开启时,默认读取AOF,所以查看数据时是空。
我们添加数据,看一下AOF文件大小,如下:
在这里插入图片描述
在这里插入图片描述

备份与恢复

停掉redis服务,将appendonly.aof复制一份,如下:

cp appendonly.aof appendonly.aof.bak

将appendonly.aof文件删除,如下:

rm -rf appendonly.aof


我们将刚才复制的文件进行重命名,如下:

mv appendonly.aof.bak appendonly.aof

启动redis服务,看看是否会按照aof文件记录的写操作进行数据恢复,如下:
在这里插入图片描述

修复

我们将redis服务停掉,在AOF文件的末尾追加一些符号,如下:

vi appendonly.aof

在这里插入图片描述
保存后,启动redis服务,用客户端连接,如下:

redis-server /etc/redis.conf

在这里插入图片描述
我们发现客户端连接被拒绝了,接下来我们使用修复工具进行修复,如下:

redis-check-aof --fix appendonly.aof

检测到了前缀是'h',输入y进行修复,如下:
在这里插入图片描述
在这里插入图片描述
此时我们再次打开appendonly.aof文件,查看hello还在不在,如下:

我们现在启动redis服务,查看是否可以连接,数据是否正常,如下:

使用redis-append-aof修复完成。

重写机制

AOF的重写默认设置,如下:

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

aof文件大小>=base_size + base_size*100%>=64mb的情况下,redis会对aof进行重写。

  • bgrewriteaof出发重写,判断当前是否有bgsave或bgrewriteaof在运行,如果有,则等待该命令结束后再继续执行
  • 主进程fork出子进程执行重写操作,保证主进程不会被阻塞
  • 子进程遍历redis内存中数据到临时文件,客户端的写请求同时写入aof_bufaof_rewrite_buf重写缓冲区保证原AOF文件完整以及新AOF生成期间的新数据修改动作不丢失
  • 子进程写完新的AOF文件后,向主进程发出信号,父进程更新统计信息,主进程把aof_rewrite_buf中的数据写入到新的AOF文件中
  • 使用新的AOF文件覆盖旧的AOF文件,完成AOF重写

优势和劣势

优势:

  • 备份机制更稳健,丢失数据概率更低
  • 可读的日志文本,通过操作AOF文件处理误操作

劣势:

  • 比起RDB占用更多的磁盘空间
  • 恢复备份速度慢
  • 每次读写都同步,有一定的性能压力
  • 存在个别Bug,造成不能恢复

官方建议

  • RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储
  • AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令恢复数据,AOF命令以redis协议追加保存每次写的操作到文件末尾
  • Redis还能对AOF文件进行后台重写,是的AOF文件的大小不至于过大
  • 只做缓存:如果你只希望你的数据在服务器运行的时候存在,你也可以不适用任何持久化方式
  • 同时开启两种持久化方式,在这种情况下,当redis重启的时候会优先载入AOF文件来回复原始数据,因为在通常情况下AOF文件保存的数据要比RDB文件保存的数据更完整
  • RDB的数据不实时,同时使用两者时服务器重启只会找AOF文件,那要不要考虑只使用AOF呢?
  • 建议不要因为RDB更适合用于备份数据库(AOF在不断变化不好备份),快速重启,而且不会有AOF可能潜在的Bug,留着作为一个万一的手段
  • 性能建议
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:36:32  更:2022-02-28 15:37:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:37:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码