redis第二章-第一课-持久化rdb和aof以及混合模式

news2024/11/24 6:25:33

RDB快照

1.在默认情况下, Redis 将内存数据库快照保存在名字为 dump.rdb 的二进制文件中,默认存储在redis的当前目录下,也就是和redis.conf同级目录下,可以修改位置
在这里插入图片描述
2.你可以对 Redis 进行设置, 让它在“ N 秒内数据集至少有 M 个改动”这一条件被满足时, 自动保存一次数据集。
默认是900秒保存一次,或者300秒保存10次,又或者60秒保存10000次就会持久化到dump.rdb文件中
在这里插入图片描述
3.还可以手动执行命令生成RDB快照,进入redis客户端执行命令savebgsave可以生成dump.rdb文件,每次命令执行都会将所有redis内存快照到一个新的rdb文件里,并覆盖原有rdb快照文件。

4.bgsave的写时复制(COW)机制
Redis 借助操作系统提供的写时复制技术(Copy-On-Write, COW),在生成快照的同时,依然可以正常处理写命令。简单来说,bgsave 子进程是由主线程 fork 生成的,可以共享主线程的所有内存数据。
bgsave 子进程运行后,开始读取主线程的内存数据,并把它们写入 RDB 文件。此时,如果主线程对这些数据也都是读操作,那么,主线程和 bgsave 子进程相互不影响。但是,如果主线程要修改一块数据,那
么,这块数据就会被复制一份,生成该数据的副本。然后,bgsave 子进程会把这个副本数据写入 RDB 文件,而在这个过程中,主线程仍然可以直接修改原来的数据。
在这里插入图片描述

AOF持久化

快照功能并不是非常耐久(durable): 如果 Redis 因为某些原因而造成故障停机, 那么服务器将丢失最近写入、且仍未保存到快照中的那些数据。从 1.1 版本开始, Redis 增加了一种完全耐久的持久化方
式: AOF 持久化,将修改的每一条指令记录进文件appendonly.aof中(先写入os cache,每隔一段时间fsync到磁盘)
1.需要在redis.conf文件开启aof,默认appendonly.aof日志文件是在redis.conf同级,开启是yes
在这里插入图片描述
2.appendonly.aof里面数据是一种resp协议格式数据,星号后面的数字代表命令有多少个参数,$号后面的数字代表这个参数有几个字符

注意,如果执行带过期时间的set命令,aof文件里记录的是并不是执行的原始命令,而是记录key过期的
时间戳

3.每当 Redis 执行一个改变数据集的命令时(比如 SET), 这个命令就会被追加到 AOF 文件的末尾。
这样的话, 当 Redis 重新启动时, 程序就可以通过重新执行 AOF 文件中的命令来达到重建数据集的目的。

4.可以配置 Redis 多久才将数据 fsync 到磁盘一次。
在这里插入图片描述
在这里插入图片描述
5.AOF重写
AOF文件里可能有太多没用指令,所以AOF会定期根据内存的最新数据生成aof文件
比如每次自增

 incr readcount

这样的话,aof记录每次都会存入自增
在这里插入图片描述

如下两个配置可以控制AOF自动重写频率

# auto‐aof‐rewrite‐min‐size 64mb //aof文件至少要达到64M才会自动重写,文件太小恢复速度本来就很快,重写的意义不大
 # auto‐aof‐rewrite‐percentage 100 //aof文件自上一次重写后文件大小增长了100%则再次触发重写

当然AOF还可以手动重写,进入redis客户端执行命令bgrewriteaof重写AOF
注意,AOF重写redis会fork出一个子进程去做(与bgsave命令类似),不会对redis正常命令处理有太多影响

在这里插入图片描述
Redis 4.0 混合持久化
重启 Redis 时,我们很少使用 RDB来恢复内存状态,因为会丢失大量数据。我们通常使用 AOF 日志重放,但是重放 AOF 日志性能相对 RDB来说要慢很多,这样在 Redis 实例很大的情况下,启动需要花费很长的时间。 Redis 4.0 为了解决这个问题,带来了一个新的持久化选项——混合持久化。

通过如下配置可以开启混合持久化(必须先开启aof):

# aof‐use‐rdb‐preamble yes

如果开启了混合持久化,AOF在重写时,不再是单纯将内存数据转换为RESP命令写入AOF文件,而是将重写这一刻之前的内存做RDB快照处理,并且将RDB快照内容和增量的AOF修改内存数据的命令存在一
起,都写入新的AOF文件,新的文件一开始不叫appendonly.aof,等到重写完新的AOF文件才会进行改名,覆盖原有的AOF文件,完成新旧两个AOF文件的替换。
于是在 Redis 重启的时候,可以先加载 RDB 的内容,然后再重放增量 AOF 日志就可以完全替代之前的AOF 全量文件重放,因此重启效率大幅得到提升。

混合持久化AOF文件结构如下
在这里插入图片描述
Redis数据备份策略:

  1. 写crontab定时调度脚本,每小时都copy一份rdb或aof的备份到一个目录中去,仅仅保留最近48小时的备份
  2. 每天都保留一份当日的数据备份到一个目录中去,可以保留最近1个月的备份
  3. 每次copy备份的时候,都把太旧的备份给删了
  4. 每天晚上将当前机器上的备份复制一份到其他机器上,以防机器损坏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/595026.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小白怎么入门CTF,看这个就够了(附学习笔记、靶场、工具包下载)

CTF靶场:CTF刷题,在校生备战CTF比赛,信安入门、提升自己、丰富简历之必备(一场比赛打出好成绩,可以让你轻松进大厂,如近期的各种CTF杯),在职人员可以工作意外提升信安全技能。 渗透…

00后太卷了,搞的我们这些老油条太难受了......

前几天我们公司一下子也来了几个新人,这些年前人是真能熬啊,本来我们几个老油子都是每天稍微加会班就打算走了,这几个新人一直不走,搞得我们也不好走。 2023年春招结束了,最近内卷严重,各种跳槽裁员&#x…

rk3568 点亮LCD(DP)

rk3568 rk3399 Android11/12 适配 DP DisplayPort(简称DP)是第一个依赖数据包化数据传输技术的显示通信端口。是一个由PC及芯片制造商联盟开发,视频电子标准协会标准化的数字式视频接口标准。主要用于视频源与显示器等设备的连接&#xff0c…

进程管理(笔记)

如果对内存寻址熟悉的话, 或者认真看过上一节的内容: 内存管理之内存寻址: https://blog.csdn.net/qq_40482358/article/details/130868188. 那么对linux系统中的进程管理应该已经有一个初步的认识了: cr3作为一个控制寄存器, 描述当前进程的页目录的物理内存基地址, 当进程切换…

SpringCloud Ribbon 学习

SpringCloud Ribbon 学习 文章目录 SpringCloud Ribbon 学习1. Ribbon 是什么?2. LB(Load Balance)3 Ribbon 架构图&机制4 Ribbon 常见负载均衡算法5 测试 1. Ribbon 是什么? Spring Cloud Ribbon 是基于 Netflix Ribbon 实现的一套客户端 负载均衡…

Docker容器与虚拟机(VM)大对比

Docker是一个开源应用容器引擎。Docker可以将应用程序与基本架构分开,从而快速交付软件。 传统虚拟机的运行需要占用较高的资源,包括磁盘空间、内存和处理器性能。每个虚拟机都需要完整的操作系统和应用程序副本,这在资源利用和启动时间上存…

好玩!AI文字RPG游戏;播客进入全AI时代?LangChain项目实践手册;OpenAI联创科普GPT | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 Microsoft Build 中国黑客松挑战赛,进入AI新纪元 近期,伴随着人工智能的新一轮浪潮,Hackathon (黑…

python+pytest接口自动化之HTTP协议基础

目录 HTTP协议简介 HTTP协议特点 HTTP接口请求方法 HTTP与HTTPS区别 HTTP与TCP/IP区别 HTTP请求过程 总结 HTTP协议简介 HTTP 即 HyperText Transfer Protocol(超文本传输协议),是互联网上应用最为广泛的一种网络协议。所有的 WWW 文件…

WePY小程序框架实践指南

在小程序开发中,提高开发效率、优化代码质量和增强用户体验是每位开发者都追求的目标。 下面我们从小程序开发框架来讲讲如何帮助开发提效,其中 WePY 是一个稍微冷门一些的开发框架,基于 Vue.js 的小程序开发的框架,提供了更好的…

Android系统中的Binder通信机制分析(7)- Java 层的 Binder 机制

声明 其实对于Android系统Binder通信的机制早就有分析的想法,记得2019年6、7月份Mr.Deng离职期间约定一起对其进行研究的,但因为我个人问题没能实施这个计划,留下些许遗憾…文中参考了很多书籍及博客内容,可能涉及的比较多先不具…

【网络】无线路由器的AP、Client、WDS、WISP使用功能图解(清晰明了)

1、有线路由器 有线路由器组成:一个有一个 WAN 口和一个 LAN 口的路由器、一个有几个 LAN 口的网络交换机,一个接在 LAN 口的 DHCP 服务器。如下图所示 2、无线路由器:AP模式 在路由器的 LAN 口上,接了一个无线交换机。这个无线交换机的无线插接口,就是这个无线路由器…

es7.x Es常用核心知识快捷版2 各种查询

一 常用查询 1.1 term查询 term关键字查询,精确匹配,不会对查询条件进行分词。 1.2 match查询 匹配查询,会将查询条件进行分词,然后进行查询,多个分词后查询的关系是or elasticsearh中查询类型,term、match、match_…

golang 微服务中的断路器 hystrix 小案例

上次我们分享了 Hystrix 具体流程,作为断路器实现,我们如何将 hystrix 用在我们的项目代码中呢? 我们可以简单的将 hystrix-go 下载下来 go get github.com/afex/hystrix-go/hystrix 代码会放到我们的 GOPATH 中,的 pkg 下面&a…

用vue-full-calendar实现酒店预定管理展示

文章目录 前言一、关于vue-full-calendar二、使用步骤1. 引入库2. 使用库3. 开始编码4. 实际效果图展示5. 点击弹窗展示6. 弹窗展示效果图 总结 前言 近些天有位做酒店业务朋友问到我,有没有前端比较好用的预定日历查看插件,实际上我也没有研究过&#…

【板栗糖GIS】——如何良好的导出并批量管理kindle上的笔记

【板栗糖GIS】——如何良好的导出并批量管理kindle上的笔记 目录 1.将Kindle Mate安装到电脑上 2. 将kindle通过usb线连接到电脑。 3. 打开Kindle Mate软件,按F2自动导入笔记 4. 选择导出方式 5. 笔记修饰 1.将Kindle Mate安装到电脑上 下载地址:…

网络安全保姆级教程,别再说你学不会了

开始,在选择软件系统方面。很多人会纠结于是使用Linux还是Windows或者Mac系统。 虽然Linux系统看起来很酷,但对于新手来说并不是很友好。 同样,Windows系统也可以通过使用虚拟机装靶机进行学习。所以,直接用window,学…

【Windows安全】授权初探:访问控制基础及应用

▒ 目录 ▒ 🛫 导读需求开发环境 1️⃣ 常见名词及缩写汇总主体对象权限(规则) 2️⃣ 常见概念访问控制及安全级别访问令牌(Access tokens)特权 (Privilege) - 线程相关的安全描述符(Security Descriptors,SD)访问控制…

批判马斯洛需求层次模型

再次批判马斯洛需求层次模型,有啥缺陷? 趣讲大白话:文化不同,心理不同 【趣讲信息科技182期】 **************************** 每个民族的文化心理结构都不一样 常常低估文化对人的影响 有一门心理学分支,文化心理学 专…

(转载)免疫优化算法在物流配送中心选址中的应用(matlab实现)

12.1 理论基础 12.1.1 物流中心选址问题 随着世界经济的快速发展以及现代科学技术的进步,物流业作为国民经济的一个新兴服务部门,正在全球范围内迅速发展。物流业的发展给社会的生产和管理、人们的生活和就业乃至政府的职能以及社会的法律制度等都带来…

Vue前端压缩图片后上传,拍照上传最佳实践

文章目录 一、前言二、使用shrinkpng进行图片压缩2.1 安装依赖包2.2 引入包2.3 开始编码 总结 一、前言 最近有一个需求,通过手机拍照后上传图片到服务器,大家应该都知道,现在的手机像素实在是太高了,随便拍一张都是10M以上&…