Redis怎么保证数据不丢失

目录

一、Redis使用持久化保证数据不丢失

二、Redis 持久化的三种方式

三、混合持久化的流程


一、Redis使用持久化保证数据不丢失

Redis 中的数据是存放在内存中的,这样可以保证 Redis 高效的运行,然而内存中的数据会随着系统的重启而丢失,那么 Redis 是如何保证数据不丢失的呢?

Redis 保证数据不丢失的手段是持久化,持久化是指将 Redis 内存中的数据存储到磁盘,以便 Redis 重启时能够从磁盘中恢复原有的数据,而整个过程就叫做 Redis 持久化,也就是说 Redis 使用了“持久化”技术来保证 Redis 中的数据不丢失

二、Redis 持久化的三种方式

  • 快照方式(RDB, Redis DataBase)将某一个时刻的内存数据,以二进制的方式写入磁盘;
  • 文件追加方式(AOF, Append Only File),记录所有的操作命令,并以文本的形式追加到文件中;
  • 混合持久化方式,Redis 4.0 之后新增的方式,混合持久化是结合了 RDB 和 AOF 的优点,在写入的时候,先把当前的数据以 RDB 的形式写入文件的开头,再将后续的操作命令以 AOF 的格式存入文件,这样既能保证 Redis 重启时的速度,又能减低数据丢失的风险。

对于Redis持久化的三种方式,个人主页中也介绍了其中的两种,接下来介绍一个混合持久化,什么是混合持久化呢?其实就是将RDB与AOF结合起来进行数据持久化

三、混合持久化的流程

我们知道,在使用AOF进行数据持久化的时候,当AOF文件过大的时候就会触发重写机制,而这里的重写其实并不完全是将之前的命令整理之后再以文本的方式进行储存,而是将整理好的命令以二进制的方式进行存储,接下来看一下实例。

输入几个Redis命令,由于是实时存储,aof文件中就会立马写入命令

随后找到aof文件并打开,观察还未重写的aof文件 

这里可以看出aof是以文本的方式将命令进行追加到文件中的,并且以特定的符号进行分隔

由于没有达到aof文件默认的重写条件,这里进行手动重写,并且我们也能发现这里的重写是在后台进行的,也就是在子进程中进行重写操作的

重写完成之后,再次打开aof文件进行观察 (退出客户端ctrl+d)

这里就可以发现,重写之后,aof文件中的命令就从文本的方式变成了二进制的方式的存储

打开客户端,输入一些命令,后续再查看aof文件

这里就可以发现aof文件的重写其实是采用的混合持久化的方式,将重写的数据以二进制来存储,新的数据仍然以文本的方式追加

至于为什么要采取混合持久化的方式,这是因为二进制的存储比文本存储的方式更加节省空间,同时在Redis服务器重启的时候加载aof文件的速度也是有所提升的

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

栈与队列练习题

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 ​🎂 作者介绍: 🎂🎂 🎂 🎉🎉&#x1f389…

Python基础入门----如何通过conda搭建Python开发环境

文章目录 使用 conda 搭建Python开发环境是非常方便的,它可以帮助你管理Python版本、依赖库、虚拟环境等。以下是一个简单的步骤,演示如何通过 conda 搭建Python开发环境: 安装conda: 如果你还没有安装 conda,首先需要安装Anaconda或Miniconda。Anaconda是一个包含很多数据…

Pytorch D2L Subplots方法对画图、图片处理

问题代码 def show_images(imgs, num_rows, num_cols, titlesNone, scale1.5): #save """绘制图像列表""" figsize (num_cols * scale, num_rows * scale) _, axes d2l.plt.subplots(num_rows, num_cols, figsizefigsize) axes axes.flatten…

全新叙事赛道:诺亚引领不良资产合成潮流,DeFi生态再添“万亿”动力

在全球DeFi领域,一场革命性的变革正在悄然兴起。诺亚项目以其独特的商业模式和前瞻性的愿景成为DeFi 2.0的一股新力量。作为全球首家专注于不良资产合成铸币的平台,诺亚项目凭借其强大的经济模型和全新的叙事赛道,正迅速崭露头角,…

用requests库下载文件时的挂起问题:一步步诊断与解决方案

在使用 requests 库下载一个大小为125KB的文件时,用户遇到了一个问题,下载进程在代码的特定行挂起了。用户已经检查了操作系统的内存,发现大约有2GB的空闲内存可用。用户正在使用 requests 库的2、28、1版本,并寻求帮助来调试这个…

【LeetCode刷题-滑动窗口】--340.至多包含K个不同字符的最长子串

340.至多包含K个不同字符的最长子串 class Solution {public int lengthOfLongestSubstringKDistinct(String s, int k) {int len s.length();if(len < k){return len;}//滑动窗口的左右指针int left 0,right 0;//定义一个哈希映射HashMap<Character,Integer> hash…

「Verilog学习笔记」用3-8译码器实现全减器

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 首先列出3-8译码器和全减器的真值表 全减器真值表如下 3-8译码器真值表如下 timescale 1ns/1nsmodule decoder_38(input E ,input A0 …

【双十二预售】9.9元就能学《人工智能导论》!打卡赢红包,还有B站大会员等你领

双十二买什么最划算&#xff1f;那当然是知识&#xff01;知识是永存的&#xff01;是无价的&#xff01; Mo 平台活动力度拉满&#xff01;&#xff01;&#xff01; 原价 199.9 元的浙江大学《人工智能导论》课程 现在只要 9.9 元&#xff01;&#xff01;&#xff01; 参…

专家呼吁:家长应承担起数字时代家庭教育新责任

在教育数字化转型的推进下,教育理念不断发生变化,学校教育不再是唯一的主角,家庭教育开始受到重视,家庭也正在逐渐成为新的学习中心。 2022年《家庭教育促进法》正式推行实施,进一步强调了家庭教育在孩子成长过程中的重要地位以及父母在孩子教育于成长过程中不可或缺的重要作用…

总结 CNN 模型:将焦点转移到基于注意力的架构

一、说明 在计算机视觉时代&#xff0c;卷积神经网络&#xff08;CNN&#xff09;几十年来一直是主导范式。直到 2021 年 Vision Transformers (ViTs) 出现&#xff0c;这个领域才开始发生变化。现在&#xff0c;是时候采用受 Transformer 架构启发的基于注意力的模型了&#x…

typeof null的结果为什么是Object?

在 JavaScript 第一个版本中&#xff0c;所有值都存储在 32 位的单元中&#xff0c;每个单元包含一个小的 类型标签(1-3 bits) 以及当前要存储值的真实数据。类型标签存储在每个单元的低位中&#xff0c;共有五种数据类型&#xff1a; 如果最低位是 1&#xff0c;则类型标签标志…

使用vs studio 2017的cl命令查看c++类的模型结构

1、定位到当前CPP文件的盘符 2、定位到cpp文件所在目录 3、输入&#xff1a; cl /d1 reportSingleClassLayout查看的类名 所属文件名 例如&#xff1a; 我的代码 //源1.cpp class Base { public:int m_A; protected:int m_B; private:int m_C; //私有成员只是被隐藏了&#x…

美国FDA宣布MoCRA法规最新指导意见

美国食品药品管理局&#xff08;FDA&#xff09;在2023年11月8日发布了最新指导意见&#xff0c;宣布将《2022年化妆品法规现代化法案》&#xff08;MoCRA&#xff09;中的化妆品“设施注册”和“产品列名”执行时间延后六个月至2024年7月1日。这一举措是FDA对行业意见的积极回…

中级程序员——vue3+js+git面试题

&#x1f642;博主&#xff1a;小猫娃来啦 &#x1f642;文章核心&#xff1a;vue3jsgit面试题 文章目录 vue3最大缺点和优点&#xff1f;vue3组合式里面&#xff0c;如何去调用子组件里面的方法&#xff1f;watch和watcheffect有什么区别&#xff1f;计算属性和watch的区别是什…

vue3+ts扩展全局属性

在使用vue3 ts配置全局变量&#xff0c;需要添加一下扩展 文档 https://cn.vuejs.org/guide/reusability/plugins.html

OSPF开放最短路径优先(Open Shortest Path First)协议

OSPF开放最短路径优先(Open Shortest Path First)协议 为克服RIP的缺点(限制网络规模&#xff0c;坏消息传得慢)在1989年开发出来的原理很简单&#xff0c;但实现很复杂使用了Dijkstra提出的最短路径算法SPF(Shortest Path First)采用分布式的链路状态协议(link state protoco…

新的 Reptar CPU 缺陷影响英特尔台式机和服务器系统

英特尔修复了其现代台式机、服务器、移动和嵌入式 CPU 中的一个高严重性 CPU 漏洞&#xff0c;包括最新的 Alder Lake、Raptor Lake 和 Sapphire Rapids 微架构。 攻击者可以利用该缺陷&#xff08;追踪为CVE-2023-23583并被描述为“冗余前缀问题”&#xff09;来升级权限、获…

开源网安解决方案荣获四川数实融合创新实践优秀案例

​11月16日&#xff0c;2023天府数字经济峰会在成都圆满举行。本次峰会由四川省发展和改革委员会、中共四川省委网络安全和信息化委员会办公室、四川省经济和信息化厅等部门联合指导&#xff0c;聚焦数字经济与实体经济深度融合、数字赋能经济社会转型发展等话题展开交流研讨。…

这次轮到微软炸场了;5000+AI工具调研报告 (500万字);狂打一星开喷AI聊天机器人;CMU LLM课程;AI创业的方向与时机 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f251; Microsoft Ignite 2023 技术大会&#xff1a;微软的年度炸场时刻&#xff0c;而且连炸四天 https://ignite.microsoft.com OpenAI 开发…

WebGoat通关攻略之 SQL Injection (intro)

SQL Injection (intro) 1. What is SQL? 本题练习SQL查询语句&#xff0c;就是写一句SQL获取叫Bob Franco所在的department SELECT department FROM employees WHERE first_name Bob AND last_name Franco成功通关&#xff01; 2. Data Manipulation Language (DML) 本题…