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 数据持久化机制 RDB 和 AOF介绍 -> 正文阅读

[大数据]Redis 数据持久化机制 RDB 和 AOF介绍

🌴单线程的Redis为什么这么快?

🌿 Redis的 " 单线程 "

Redis的单线程指的的是Redis的 网络IO数据读写 是由一个线程完成的

但Redis的 数据持久化 , 异步删除, 集群之间数据同步是由其他线程完成的

image-20220306163042788

🌿 Redis快的原因

  1. 🍀 避免了维护多线程共享数据安全的开销

  2. 🍀 基于内存操作

  3. 🍀 ``高效的数据结构 跳表 和 哈希表

  4. 🍀采用多路IO复用,能在网络IO中并发处理大量的客户端请求

🌴Redis的数据持久化

由于Redis是基于内存操作的,数据都存储在内存中,如果一断电,数据必将丢失

Redis提供了两个数据持久化机制来解决这个问题

  1. 🍀AOF日志

  2. 🍀 RDB快照

🌿 AOF持久化机制

🍃 AOF持久化流程

客户端的请求写命令会被追加到AOF缓冲区

AOF缓冲区根据AOF持久化策略将操作同步到磁盘的AOF文件中

AOF文件超过重写策略或手动重写时,会对AOF文件rewrite重写,压缩AOF文件容量

Redis服务器重启时,会load加载AOF文件中的写操作

🍃 写后日志

													写前日志

image-20220306172021780

													写后日志

image-20220306172434517

AOF为什么采用写后日志?
  1. 🍀首先要知道日志是用来恢复数据的 因此日志不能存储错误的命令 假如 采用写前日志,则需要对存入日志中的每一条命令进行检查,这样势必会带来性能开销 而redis就是为了追求速度 采用写后日志,只有能成功执行的命令才存入日志中 不用去对命令进行检查

  2. 🍀 由于Redis的读写操作是单线程的 采用写后日志 可以避免对 写操作的阻塞

🍃日志记录的三种策略

  1. 🍀 appendfsync always 始终同步

  2. 🍀 appendfsync everysec 每秒同步一次

  3. 🍀 appendfsync no 不主动进行同步,把同步时机交给操作系统。

🌵 三者各有优缺点 :

appendfsync  always   始终同步

每个写操作执行完毕后里面同步到日志文件中  性能较差但 数据 完整性 比较好
appendfsync  everysec  每秒同步一次

每隔一秒钟进行一次同步,先将日志写到AOF文件的内存缓冲区,每隔一秒再把缓冲区的内容写入磁盘,如果宕机,本秒的数据可能丢失
appendfsync  no  不主动进行同步,把同步时机交给操作系统

性能好,但是宕机会丢失大量数据

image-20220306181846233

🍃AOF文件重写


由于AOF是记录每一条写操作命令,势必会让AOF文件越来越大,文件越大,恢复数据的时候越慢


因此需要对AOF文件进行重写
											AOF重写的过程
fork 一条子进程  读取当前Redis服务器的数据库信息  遍历所有的键生成对应的新命令,写到新的AOF文件中  


重写的时候,Redis服务器主进程依然能接受处理请求,AOF重写的时候会启用AOF文件重写缓冲区,主进程处理请求后会将命令追加到AOF文件缓冲区


当子进程完成AOF文件重写后  会将AOF文件重写缓冲区的内容写到新的AOF文件中  然后再将新的AOF文件覆盖原理的AOF文件

image-20220306185143444

🌿 RDB持久化机制

🍃 RDB持久化流程

Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到 一个临时文件中待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。 整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能 如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失

🍃 RDB触发方式

  1. 🍀save : 会阻塞主进程
  2. 🍀执行 bgsave 命令 : fork一条子进程完成数据快照,不会阻塞主进程

🍃 RDB持久化相关配置

stop-writes-on-bgsave-error    当Redis无法写入磁盘的话,直接关掉Redis的写操作。推荐yes
rdbcompression 压缩文件      如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能。推荐yes.
rdbchecksum 检查完整性    在存储快照后,还可以让redis使用CRC64算法来进行数据校验

🌿AOF持久化和RDB持久化对比

image-20220306192238404

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:34:18  更:2022-03-08 22:34:47 
 
开发: 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 8:44:33-

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