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---持久化

一、aof(append only file)

概念

aof日志存储的是Redis服务器的顺序指令序列,aof日志只记录对内存修改的指令记录。按照redis的协议存储,例如:命令set key val 存为*3\r\n$3\r\nset\r\n$3\r\nkey\r\n$3\r\nval\r\n

配置

配置如下:

##开启aof
appendonly yes
appendfilename "appendonly.aof"
	#刷盘策略 appendfsync always每条命令刷盘 everysec每秒刷盘 no交由系统刷盘 
appendfsync everysec 
	# yes如果aof数据不完整,尽量读取最多的格式正确的数据 
	# no如果aof数据不完整 报错, 可以通过redis-check-aof 来修复aof文件
aof-load-truncated yes 

##关闭aof复写
	#auto-aof-rewrite-percentage 为0 则关闭aof复写 64k 复写一次 128k 复写第二次
	#策略1 redis会记录上次aof复写时的size,如果之后累计超过了原来的size,则会发生aof复写
auto-aof-rewrite-percentage 0
	#策略2 为了避免策略1中,小数据量时产生多次发生aof复写,策略2在满足策略1的前提下需要超过64mb才会发生aof复写
auto-aof-rewrite-min-size 64mb
##关闭混合持久化
aof-use-rdb-preamble no
##关闭rdb
save ""

恢复

通过重放aof日志中指令序列来恢复Redis当前实例的内存数据结构的状态

缺点

1.随着时间越长,aof日志量越来越大
2.如果redis重启,重放整个aof日志会非常耗时,导致redis长时间无法对外提供服务

二、aof rewrite(aof复写)

概念

  • aof rewrite在aof的基础上,满足一定策略则fork进程,根据当前内存状态,转换成一系列的redis命令, 序列化成一个新的aof日志文件中,序列化完毕后再将操作期间发送的增量aof日志追加到新的aof日志中,追加完毕后替换旧的aof日志文件,以此达到对aof日志瘦身的目的。
  • 命令:BGREWRITEAOF

配置

# 开启aof
appendonly yes
appendfilename "appendonly.aof"
#appendfsync always每条命令刷盘 everysec每秒刷盘 no交由系统刷盘 
appendfsync everysec
#开启aof复写
#auto-aof-rewrite-percentage 为0 则关闭aof复写 64k 复写一次 128k 复写第二次
#策略1 redis会记录上次aof复写时的size,如果之后累计超过了原来的size,则会发生aof复写
auto-aof-rewrite-percentage 100
#策略2 为了避免策略1中,小数据量时产生多次发生aof复写,策略2在满足策略1的前提下需要超过64mb才会发生aof复写
auto-aof-rewrite-min-size 64mb
#yes 重启时如果aof数据不完整,尽量读取最多的格式正确的数据
#no 重启时如果aof数据不完整 报错, 可以通过redis-check-aof 来修复aof文件
aof-load-truncated yes

#关闭混合持久化
aof-use-rdb-preamble no
#关闭rdb
save ""

流程图

在这里插入图片描述

恢复&缺点

与aof一致

三.rdb

概念

  • 是一种快照持久化,它通过fork主进程,在子进程中将内存当中的数据键值对按照存储方式持久化到rdb文件中;rdb存储的是经过压缩的二进制数据;
  • 命令:BGSAVE

配置

# 关闭aof
appendonly no
# 关闭aof复写
auto-aof-rewrite-percentage 0
auto-aof-rewrite-min-size 64mb
# 关闭混合持久化
aof-use-rdb-preamble no
#开启rdb
#注释掉save以后为开启rdb模式 默认模式为下面3种
#save ""
#写了多个save策略,只需要满足一个则开启rdb持久化
#save 3600 1 #3600s内有一次修改
#save 300 100 #300s内有100次修改
#save 60 10000 #60s内有10000次修改

流程图

在这里插入图片描述

缺点

一旦redis宕机,redis将丢失一段时间的数据;RDB需要经常fork子进程来保存数据集到硬盘,当数据集比较大的时候,fork的过程是非常耗时的,可能会导致Redis在一些毫秒级内不能响应客户端的请求,如果数据集巨大并且CPU性能不是很好的情况下,这种情况会持续1秒,AOF也需要fork,但是你可以调节重写日志文件的频率来提高数据集的耐久度。

四、混合持久化

概念

混合持久化是吸取rdb和aof两者优点的一种持久化方案;aofrewrite的时候实际持久化的内容是rdb,等持久化后,持久化期间修改的数据以aof的形式附加到文件的尾部,实际上是对aof rewrite的优化。

配置

# 开启aof
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
#开启混合持久化
aof-use-rdb-preamble yes
# 开启rdb
save ""

流程

在这里插入图片描述

五、总结

  • mysql缓存方案中,redis不开启持久化,redis只存储热点数据,数据的依据来源于mysql;若某些数据经常访问需要开启持久化,此时可以选择rdb持久化,此时可以选择rdb持久化方案,也就是允许丢失一段时间数据;
  • 对数据可靠性要求高,在机器性能,内存也安全(fork写时复制 最差的情况下)的情况下,可以让redis同时开启aof和rdb,注意此时不是混合持久化;redis重启优先从aof加载数据(停服时使用shutdown save安全关闭,将内存重新生成一遍rdb,如果shutdown失败则使用aof重启redis),理论上aof包含更多最新数据;如果只开启一种,那么使用混合持久化;
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-26 11:37:32  更:2022-02-26 11:40:21 
 
开发: 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:47:27-

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