栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Redis持久化机制

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Redis持久化机制

 温馨提示:本文所涉及操作都是围绕单进程单实例版(单机版)Redis,文中有关于Redis配置文件路径等需按自己个人服务器实际路径为准 !!或根据[Redis单机版详细安装图文教程](https://blog.csdn.net/weixin_44977377/article/details/123343579?spm=1001.2014.3001.5501)一文重新安装一个干净的环境来操作~

文章目录

Redis持久化机制

RDB

配置参数释义save / bgsave弊端优点Redis Forck AOF

优点弊端方案分析

Redis VS HDFS

HDFSRedis AOF配置

开启AOFfsync策略

Redis持久化机制 RDB

Redis执行快照/副本时是怎么保证非阻塞对外提供服务的同时实现将数据落地的?

Redis数据落地的时候具有时点性在某一个时间点开始数据落地的时候,程序通过fork的方式创建一个子进程,当主进程数据发生修改后,每一笔修改会触发写时复制(COW),新的数据指向新的内存地址,子进程中的落地数据还是指向老的数据地址,因此,子进程落地的数据还是创建的时候的数据,保证了时点正确。

Redis默认开启RDB
配置参数释义

save / bgsave

save : 关机维护时使用,会阻塞服务bgsave : fork创建子进程,不会阻塞服务 弊端

不支持拉链,只有一个dump.rdb,通常需要人工维护每天拷贝出最后一份rdb数据

丢失数据相对多一些,时点与时点之间窗口数据容易丢失,比如8点得到一个rdb, 当9点需要要落一个rdb,服务器宕机了

优点

类似java中的序列化,恢复的速度相对快

Redis Forck

使用linux的时候,父进程的数据,子进程可不可以看得到?

理论上进程是数据隔离的!但父进程其实可以让子进程看到数据!比如linux中,export的环境变量,子进程的修改不会破坏父进程,父进程的修改也不会破坏子进程

如果父进程是redis,内存数据比如10G,触发fork() 创建子进程时应该如下:

速度快空间小

AOF

Append only File (只会向文件追加)Redis中,RDB和AOF可以同时开启

如果开启了AOF,只会用AOF恢复

v4.0 后变化

AOF中包含RDB全量,增加记录新的写操作

优点

丢失数据少 弊端

文件体量无限变大,恢复慢 方案分析

Redis运行了N(假设N>=10)年,开启了AOF,N年初刚过完年,Redis突然挂了,新的一年整个人都不好了,问:

1、AOF多大?

很大,假设有10T

2、恢复时,内存不会溢出?

不会,因为要溢出N年前就溢出了,而且溢出的数据根本不会成功写到文件中

3、恢复要多久?

恢复最快且至少N/2年

既然如此,什么方案才能既保住AOF丢失数据量少的优点,又要让AOF足够小?

Redis VS HDFS HDFS

Fsimage+edits.log

让日志只记录增量合并的过程 Redis

v4.0以前

重写

删除抵消的命令合并重复的命令 最终也是一个纯指令的日志文件 v4.0以后

重写

将老数据RDB到AOF文件中将增量的以指令形式Append到AOF

AOF是一个混合体

利用了RDB的快利用了日志的全量

有这样一个配置项【aof-use-rdb-preamble yes】

原文描述:

当重写AOF文件时,Redis可以在AOF文件中使用RDB的前导来更快地重写和恢复。
当这个选项被打开时,重写的AOF文件由两个不同的节组成:

【RDB文件】【AOF尾巴】

当加载时,Redis识别AOF文件以“Redis”字符串开始,然后加载带有前缀的RDB文件,并继续加载AOF尾部。
AOF配置 开启AOF

编辑配置文件

vi /etc/redis/6379.conf 

找到APPEND onLY MODE 部分配置文件

将appendonly no 修改为appendonly yes

自动AOF

自动重写只追加文件。当AOF日志大小增长指定的百分比时Redis能够自动重写日志文件隐式调用BGREWRITEAOF指令。

自动AOF是怎样工作的?
Redis记住最近一次重写后AOF文件的大小(如果在重启后没有重写,则使用启动时AOF文件的大小)。将此基础大小与当前大小进行比较。如果当前大小大于指定的百分比,则会触发重写。您还需要为要重写的AOF文件指定最小大小,这对于避免重写AOF文件时,即使达到了百分比增长,但它的实际大小却很小。

fsync策略

Redis支持三种不同的模式

默认值是“everysec”

no:不进行fsync,让操作系统在需要的时候更快的刷新数据.Always:每次写入追加日志后进行fsync。速度较慢但是数据是最安全可靠的。Everysec:每秒fsync一次。基于两者之间的折中速度和数据安全的一种模式。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/762551.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号