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高级——持久化 -> 正文阅读

[大数据]Redis高级——持久化

什么是持久化

Redis 对数据的操作都是基于内存的,当遇到了意外情况导致 Redis 服务关闭后,如果没有持久化机制,Redis 中的数据将会丢失,利用永久性存储介质将数据进行保存,在特定的时间将保存的数据进行恢复的工作机制称为持久化


RDB(Redis DataBase)

简介

将内存中的所有数据进行快照保存,并以二进制文件的形式存储到硬盘上

手动触发

save 指令:触发一次 RDB 持久化,但?save 命令会阻塞 Redis 服务,直到RDB持久化完成,当 Redis 服务储存大量数据时,会造成较长时间的阻塞

bgsave 指令:触发一次 RDB 持久化,与 save 命令不同的是,一般不会造成 Redis 服务阻塞,Redis 进程会执行 fork 操作创建子进程,在子进程中执行 RDB 持久化,推荐使用

触发一次 RDB 持久化后,当前 Redis 中的数据快照会以二进制的形式被保存在 dump.rdb 文件中,当 Redis 服务重启时,数据会自动恢复

自动触发

在?redis.windows.conf(Linux 下为 redis.conf)中进行 RDB 配置

save second changes

在限定时间范围内,key 的变化达到指定数量则进行持久化(进行 bgsave 操作)

second:监控时间范围

changes:监控 key 的变化量?

其它 RDB 配置

参数名默认值说明
dbfilenamedump.rdb快照文件的名称
dir./快照文件的存放路径
rdbcompressionyes指定存储至本地时是否压缩,Redis 采用 LZF 压缩
rdbchecksumyes指定读写时是否进行数据校验

RDB 的优缺点

优点

  • RDB 文件是一个紧凑的二进制文件压缩文件,非常适用于灾难恢复(disaster recovery),可以(在加密后)将它传送到别的数据中心
  • RDB 恢复数据的速度要远高于 AOF
  • RDB 执行过程只需要 fork 出一个子进程进行处理,不会导致 Redis 服务进程出现长时间阻塞,性能较高

缺点

  • RDB 不能实现实时持久化,数据安全性较低,容易丢失数据
  • RDB 文件涉及到 Redis 的新老版本兼容问题
  • 当数据量较大时,效率较低
  • fork 出子进程会产生额外的内存消耗

AOF(Append Only File)

简介

将 Redis 的写操作日志以追加的方式写入文件

写入磁盘的三种策略

当 Redis 进行持久化时,会先将客户端传来的写命令存放在 AOF 缓冲区,再根据具体的策略写入磁盘中的 AOF 文件

always:每次写入指令都同步到 AOF 文件中,不会丢失数据,但性能低下

everysec:每秒将缓冲区的指令同步到 AOF?文件中,最多只会丢失一秒内的数据

no:由操作系统控制写入指令同步到 AOF?文件的周期

AOF 配置

在?redis.windows.conf(Linux 下为 redis.conf)中进行 AOF?配置

参数名

默认值

说明

appendonly

no

是否开启 AOF 持久化

appendfsync

everysec

指定 AOF 写入策略

appendfilename"appendonly.aof"AOF 持久化文件名
dir./AOF 持久化文件的路径,与 RDB 文件路径一致

AOF 重写

简介

随着运行时间的推移,AOF 文件会越来越大,为了解决这个问题,Redis 创建一个新的 AOF 文件,用来代替原 AOF 文件,两个文件保存的数据库状态相同,但新的 AOF 文件中,将指令进行整理、合并,不再包含任何浪费空间的冗余指令,这一过程称作 AOF 重写

重写规则

  • 已经超时的数据不再写入文件
  • 无效指令不再写入文件,如某些数据被重复设值,或是数据设值后被删除
  • 多条指令合并为一个

手动重写

bgrewriteaof 指令:与 bgsave 类似,Redis 进程会执行 fork 操作创建子进程,在子进程中执行 AOF 重写

自动重写

参数名默认值说明
auto-aof-rewrite-percentage100指定 AOF 文件重写时需要的增长比例
auto-aof-rewrite-min-size64mb指定 AOF 文件重写时最小的文件大小

通过 info 指令可以查看如下两个参数

aof_current_size:当前 AOF?文件的大小

aof_base_size:上一次重写时 AOF 文件的大小,初始为 0

当 (aof_current_size - aof_base_size) /?aof_base_size ≥ auto-aof-rewrite-percentage ,也就是上一次重写后,文件的增长比例超过设定范围(初始状态除外),且?aof_current_size >?auto-aof-rewrite-min-size ,则自动调用 bgrewriteaof 指令进行重写

AOF 重写缓冲区

客户端传来写命令除了存放在 AOF 缓冲区,还会存放在 AOF 重写缓冲区,在重写时,将其中的数据重写后,合并替换原先的 AOF 文件

AOF 缓冲区为什么不能替代 AOF 重写缓冲区?

AOF 重写缓冲区记录的是从上次重写开始后的所有需要重写的指令,而 AOF 缓冲区不断的进行持久化,可能只记录了剩下来的部分指令

AOF 的优缺点

优点

  • 通过配置合理的写入策略,能更好的保证数据不丢失
  • AOF 文件以 append 的方式写入,没有任何磁盘寻址的开销,写入性能非常高,而且文件不容易破损

缺点

  • 对于相同的数据量,AOF 文件通常比 RDB 文件大
  • 恢复大量数据时的速度慢于 RDB
  • 更加脆弱,出现 bug 的可能性要大一些
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-15 11:51:47  更:2021-10-15 11:54:07 
 
开发: 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 1:27:20-

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