NOSQL Redis 数据持久化

Redis 数据持久化

  1. 快照方式(RDB,Redis DataBase) 全量的 在指定的时间间隔能对你的数据进行快照存储。
  2. 文件追加方式(AOF,Append only File)增量
    记录每次对服务器的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据。
  3. 混合持久性方式( redis 4 默认方式)
RDB 快照方式

实现类似照片记录效果的方式,就是把某一时刻的数据和状态以文件的形式写道磁盘上,也就是快照。即使出现宕机,快照也不会丢失,数据的可靠性得到保证,快照文件是RDB文件(dump.rdb)。

①在指定的时间间隔内将内存中的数据集快照写入磁盘,即Snapshot内存快照,他恢复是再将硬盘快照文件直接读回内存里。

②redis的数据都在内存中,保存备份时它执行的是全量快照,即把内存所有数据存入磁盘。

③RDB保存的文件是dump.rdb。

触发策略

①手动触发两个命令
手动save命令:通过在 redis-cli 客户端中执行 save 命令可立即进行一次持久化保存。save 命令在执行期间会阻塞 redis-server 进程,直至持久化过程完毕。而在 redis-server
进程阻塞期间,Redis不能处理任何读写请求,无法对外提供服务。线上禁止使用
手动bgsave命令:通过在 redis-cli 客户端中执行 bgsave 命令可立即进行一次持久化保存。不同于 save 命 令的是,正如该命令的名称一样,background save,后台运行 save。bgsave 命令会使服务器进程 redis-server
会fork一个子进程,由该子进程负责完成保存过程。在子进程进行保存过程中,不会阻塞 redis-server
进程对客户端读写请求的处理。

②自动条件触发的本质:是 bgsave 命令的执行。
用户通过在配置文件中做相应的设置后,Redis会根据设置信息自动调用bgsave命令执行。
对于 RDB 持久化而言,我们一般都会使用 BGSAVE 来持久化,毕竟它不会阻塞服务器进程
在 Redis 的配置文件,有提供设置服务器每隔多久时间来执行 BGSAVE 命令。
Redis 默认是如下配置:
save 900 1 // 900 秒内,对数据库至少修改 1 次。下面同理
save 300 10
save 60 10000
只要满足其中一种情况,服务器就会执行 BGSAVE 命令。

在这里插入图片描述
优势:
①适合大规模的数据恢复、 已经dump.rdb 是压缩的,恢复比较快
②按照业务定时备份、
③对数据完整性和一致性要求不高、 不秒级别备份的
④RDB文件在内存中的加载速度比AOF快。

劣势:
①在一定间隔时间做一次备份,如果redis意外宕机,就丢失从当前至最近一次快照期间的数据,快照之间的数据会丢失;
②内存数据的全量同步,如果数据量太大会导致I/O严重影响服务性能
③RDB依赖于主进程的fork,在更大数据集上,可能导致服务请求的瞬间延迟。fork的时候内存中的数据被克隆了一份,大致膨胀两倍。需要考虑。

RDB 持久化配置
# 时间策略
save 900 1
save 300 10
save 60 10000# 文件名称
dbfilename dump.rdb# 文件保存路径
dir /home/work/app/redis/data/# 如果持久化出错,主进程是否停止写入
stop-writes-on-bgsave-error yes
# 是否压缩
rdbcompression yes
# 导入时是否检查
rdbchecksum yes

在这里插入图片描述

AOF(Append Only File)持久化

以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件,但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次已完成数据的恢复工作。

默认情况下,redis没有开启AOF,开启配置:appendonly yes。
appendfsync 文件同步策略 **
appendfsync Always:同步写回,每个写命令执行完
立刻同步的将日志写回磁盘**。可靠性高,数据基本不丢失
appendfsync everysec:每秒写回,每个写命令执行完,只是先把日志写到AOF文件的内存缓冲区,每隔一秒把缓冲区中的内容写入磁盘。性能较好
appendfsync no:操作系统控制的写回,每个写命令执行完,只是先把日志写到AOF文件的内存缓冲区,由操作系统决定何时将缓冲区内容写回磁盘。性能好

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

AOF持久化配置

# 是否开启aof
appendonly yes# 文件名称
appendfilename "appendonly.aof"# 同步方式
appendfsync everysec# aof重写期间是否同步
no-appendfsync-on-rewrite no# 重写触发配置
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb# 加载aof时如果有错如何处理
aof-load-truncated yes# 文件重写策略
aof-rewrite-incremental-fsync yes

在这里插入图片描述

RDB、AOF 混合

在这里插入图片描述
在这里插入图片描述

同时关闭 RDB、AOF

#禁止 rdb
save “”
禁止aof
appendonly no

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

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

相关文章

时间管理器:高效管理你的时间

随着社会的发展和生活节奏的加快,时间管理成为了人们日常生活中不可或缺的一部分。每个人都希望能够高效利用时间,提高工作和生活的效率。然而,在忙碌的生活中,很多人常常感到无所适从、无法合理规划自己的时间。这时,…

Flutter:类功能索引(全)

Flutter 类功能索引(全) 本文以表描述形式收录了Flutter中提供的各个类,旨在方便地进行查询相关组件。 本文地址:https://blog.csdn.net/qq_28550263/article/details/133415589 跳转:字母索引 A 组件名称描述Animat…

linux centos7 安装mongodb7.0.1 及 mongosh2.0.1

下载数据库并解压 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-7.0.1.tgz tar -zxf mongodb-linux-x86_64-rhel70-7.0.1.tgz #移动到/usr/local/mongo目录 mv mongodb-linux-x86_64-rhel70-7.0.1 /usr/local/mongodbmongosh 命令行下载 #下载命令行…

毕业设计选题之Java+springboot线上蔬菜销售与配送系统(源码+调试+开题+lw)

💕💕作者:计算机源码社 💕💕个人简介:本人七年开发经验,擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等,大家有这一块的问题可以一起交流! 💕&…

qml保姆级教程一:布局组件

💂 个人主页:pp不会算法v 🤟 版权: 本文由【pp不会算法v】原创、在CSDN首发、需要转载请联系博主 💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 QML系列教程 QML教程一:布局组件 文章目录 锚布局anchors属…

ORACLE数据恢复(误操作delete或update如何恢复?)

有时候会不小心 DELETE 或 UPDATE 错了某张表的某条数据,想要恢复的话,我们可以使用 AS OF TIMESTAMP 语法恢复数据。 在Oracle中允许你使用 AS OF TIMESTAMP 语法查询某个时间点的数据快照,利用这个特性就能查询出误操作之前的数据&#xf…

【C++】string 之 find、rfind、replace、compare函数的学习

前言 上篇文章&#xff0c;我们学习了assign、at、append这三个函数 今天&#xff0c;我们来学习find、 函数 find函数 引入 我们都知道&#xff0c;find函数可以是string类中&#xff0c;用于查找字符或者字符串的函数 也可以是&#xff0c;<algorithm>头文件中&am…

Python爬虫技术系列-01请求响应获取-urllib库

Python爬虫技术系列-01请求响应获取-urllib库 1 urllib库1.1 urllib概述1.1.1 urllib简介1.1.2 urllib的robotparser模块1.1.3 request模块1.1.4 Error1.1.5 parse模块1.1.6 百度翻译案例 1.2 urllib高级应用1.2.1Opener1.2.2 代理设置 1 urllib库 参考连接&#xff1a; https…

php导出cvs,excel打开数字超过16变科学计数法

今天使用php导出cvs&#xff0c;在excel中打开&#xff0c;某一个字段是数字&#xff0c;长度高于16位结果就显示科学计数法 超过15位的话从第16位开始就用0代替了 查询了半天总算解决了就是在后面加上"\t" $data[$key][1] " ".$value[1]."\t";…

记录一次SQL注入src挖掘过程

记录一次小白SQL注入src挖掘过程&#xff0c;其中碰到了很多问题&#xff0c;报错和解决 先是使用谷歌语法找到一个可以注入的网站 谷歌语法&#xff1a; 公司inurl:php?id 然后该公司的URL为 URL:XXXXXXXXXX/xxx.php?id1 输入测试有无注入&#xff0c;有没有waf 发现…

一探Redis究竟:超火爆入门指南,你竟然还没看?

Redis入门教程目录&#xff1a;【Redis入门教程目录】 简介 Redis是由C语言编写的开源、基于内存、支持多种数据结构、高性能的Key-Value数据库。 特性 速度快 首先Redis是将数据储存在内存中的&#xff0c;通常情况下每秒读写次数达到千万级别。其次Redis使用ANSI C编写&…

产品经理认证(UCPM)备考心得

UCPM是联合国训练所CIFAL中心颁发的产品经理证书。如今&#xff0c;ESG是推动企业可持续发展的新潮流。UCPM作为一种可持续发展证书&#xff0c;为我们带来了一套先进科学、系统全面的产品管理模式&#xff0c;是产品管理领域公认的权威证书。那么&#xff0c;如何准备这张证书…

python tempfile模块:生成临时文件和临时目录

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 tempfile 模块专门用于创建临时文件和临时目录&#xff0c;它既可以在 UNIX 平台上运行良好&#xff0c;也可以在 Windows 平台上运行良好。 tempfile 模块中常用…

学习笔记——BSGS

众所周知&#xff0c;北上广深是中国非常一线的城市&#xff0c;北京是首都&#xff0c;地处…… 正片开始&#xff01; 一、BSGS基础算法 实现目标&#xff1a; A x ≡ B ( m o d P ) , ( gcd ⁡ ( P , A ) 1 ) A^x\equiv B(\mod P),(\gcd(P,A)1) Ax≡B(modP),(gcd(P,A)1)…

Android一个简单带动画的展开收起功能

在Android上&#xff0c;布局的显示和隐藏往往很生硬&#xff0c;给人体验不好&#xff0c;本文使用 android:animateLayoutChanges属性&#xff0c;使得体验效果瞬间提升一个档次。 1、效果如下&#xff1a; 展开和收起 2、具体代码如下&#xff1a; package com.zw.demo202…

GEO生信数据挖掘(三)芯片探针ID与基因名映射处理

检索到目标数据集后&#xff0c;开始数据挖掘&#xff0c;本文以阿尔兹海默症数据集GSE1297为例 目录 处理一个探针对应多个基因 1.删除该行 2.保留分割符号前面的第一个基因 处理多个探针对应一个基因 详细代码案例一删除法 详细代码案例二 多个基因名时保留第一个基因名…

细说适配器模式

结构型模式&#xff0c;顾名思义讨论的是类和对象的结构&#xff0c;它采用继承机制来组合接口或实现&#xff0c;或者通过组合一些对象&#xff0c;从而实现新的功能。GoF23种设计模式中的结构型模式有7种&#xff0c;分别是适配器模式&#xff08;Adapter&#xff09;、装饰器…

进阶JS-内置构造函数

基本数据类型&#xff1a;string、number、boolean、undefined、null 引用类型:对象 其实字符串、数值、布尔等基本类型也都有专门的构造函数&#xff0c;这些我们称为包装类型。 JS中几乎所有的数据都可以基于构成函数创建。 const str andy//其实是const strnew String(a…

在windows的ubuntu LTS中安装及使用EZ-InSAR进行InSAR数据处理

EZ-InSAR&#xff08;曾被称为MIESAR&#xff0c;即Matlab界面用于易于使用的合成孔径雷达干涉测量&#xff09;是一个用MATLAB编写的工具箱&#xff0c;用于通过易于使用的图形用户界面&#xff08;GUI&#xff09;进行干涉合成孔径雷达&#xff08;InSAR&#xff09;数据处理…

开源博客项目Blog .NET Core源码学习(3:数据库操作方式)

开源博客项目Blog采用SqlSugar模块连接并操作数据库&#xff0c;本文学习并记录项目中使用SqlSugar的方式和方法。   首先&#xff0c;数据库连接信息放在了App.Hosting项目的appsettings.json中DbConfig节&#xff0c;支持在DbConfig节配置多个数据库连接信息&#xff0c;以…