Redis怎么保证数据不丢失

news/2024/12/23 5:46:08/

目录

一、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文件的速度也是有所提升的


http://www.ppmy.cn/news/1226556.html

相关文章

【蓝桥杯】砍树(树上差分)

考察知识点&#xff1a;树上差分 问题描述 给定一棵由 n 个节点组成的树以及 m 个不重复的无序数对&#xff08;a1,b1&#xff09;(a2,b2) (a3,b3)......(am,bm)&#xff0c;其中ai互不相同&#xff0c;bi互不相同。ai&#xff0c;bi&#xff08;1 < i,j < m&#xff09…

计算机毕业设计选题推荐-个人健康微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

springboot jar包 无法读取静态资源文件

springboot jar包 无法读取静态资源文件 参考 springboot项目读取resources目录下的文件的9种方式 Resource resource resourceLoader.getResource("classpath:static/jkbw/jkbw4.txt");try{InputStream inputStream resource.getInputStream();BufferedReader r…

阿里AoneFlow分支管理

分支模式 1.TrunkBased模式 工作方式 TrunkBased 模式是持续集成思想所崇尚的工作方式&#xff0c;它由单个主干分支和许多发布分支组成&#xff0c;每个发布分支在特定版本的提交点上从主干创建出来&#xff0c;用来进行上线部署和 Hotfix&#xff08;补丁&#xff09;。 …

获取虎牙直播源

为了今天得LOL总决赛 然后想着下午看看 但是网页看占用高 就想起来有个直播源 也不复杂看了大概一个小时 没啥问题 进入虎牙页面只有 直接F12 网络 然后 看这个长条 一直在获取 发送 那就选中这个区间 找到都是数字这一条 如果直接访问的话会一直下载 我这都取消了 然后 打开…

【总结】中断处理流程

关中断保存断点&#xff1a;包括PC和PSW&#xff0c;保证中断服务程序执行后可以回到原来的程序中断服务程序寻址 进入中断服务程序 保存现场和屏蔽字&#xff0c;保证原来程序的现场执行信息保留便于在断点处继续执行开中断&#xff08;中断嵌套&#xff09;执行中断服务程序…

聊一聊小程序单聊页面构思

主题界面构建 主题界面构建可以有很多种做法&#xff0c;一种为左右平分式UI设计&#xff0c;简单来说就是对方和我方聊天DOM各占屏幕的一半&#xff0c;完全可以使用flex的布局以及vw构建&#xff0c;一种吧聊天内容作为整体聊天界面的子节点&#xff0c;聊天container内容的高…

【计算机网络笔记】IPv6简介

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…