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

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

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

相关文章

小家具工厂是如何实现成本降低,收益提高的呢

随着科技的发展和数字化时代的到来,越来越多的工厂开始采用生产管理软件来提高生产效率和管理水平。本文将分享我们工厂在使用了万界星空科技免费生产管理MES软件后的成功经验,希望对广大读者有所帮助。 我们工厂在市面上找了很多厂家咨询生产管理软件的…

3D应用开发引擎HOOPS如何促进AEC数字化架构革新?

随着科技的不断发展,建筑、工程和施工(AEC)行业正在掀起令人瞩目的数字化转型浪潮。在这一变革的过程中,Tech Soft 3D的HOOPS SDK(软件开发工具包)正扮演着关键的角色,为构建世界一流的AEC和BIM…

谷歌浏览器F12/打开开发者工具网络就无法连接报错

刷新页面就出现提示: 原因:浏览器网络设置的问题,网络设置了离线状态,切换回3G即可。

Python调用企微机器人: 发送常用格式汇总

企微接口文档 发送应用消息 - 接口文档 - 企业微信开发者中心 发送格式 应用支持推送文本、图片、视频、文件、图文等类型。 ~~~以下列举常用格式 示例~~~ 1.发送文本 代码如下: def sendtxt_robotmsg(self):# 正式keywx_key "xx"wx_webhookurl htt…

C# 实时监控双门双向门禁控制板源码

本示例使用设备:实时网络双门双向门禁控制板可二次编程控制网络继电器远程开关-淘宝网 (taobao.com) using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.…

ESP32踩坑记2-组件链接的未定义

发现问题 开发ESP32的时候,当我使用多个组件的时候,编译的时候出现两个问题 Task/Task_Gui.c:13: undefined reference to lvgl_driver_init’ However, the component manager is not enabled 解决问题1 但是我去找这个文件的时候,发现…

构建自定义ChatGPT,微软推出Copilot Studio

11月16日,微软在美国西雅图举办“Microsoft Ignite 2023”全球开发者大会。本次人工智能成为重要主题,微软几乎把所有产品都集成了生成式AI功能并发布了一系列全新产品。 其中,微软重磅推出了Copilot Studio(预览版)&…

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

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

提升提测质量之研测共建 | 京东云技术团队

一、序 日常研测工作演绎 你是否也有同样的困惑? 跟进的需求,就在提测前一秒,被告知不能如期提测了,研测计划被打乱; 提测的功能,犹如遇到不好的购物体验,缺斤短两,与prd预期不符…

外汇天眼:世界级的交流碰撞!Wiki Finance EXPO悉尼2023圆满落幕

11月16日对于外汇天眼来说是个特殊的日子,而对于整个世界金融界来说也是一个意义非凡的日子,由WikiGloba展会品牌WiKiEXPO举办的2023 Wiki Finance Expo在悉尼富丽敦酒店顺利举办并圆满落幕。 金融科技作为金融业创新变革的重要引擎,在全球数…

iddata函数合成的数据中采样间隔时间的两种设置方式及其程序举例

iddata函数生成的数据中采样间隔时间的两种设置方式及其程序举例 在对iddata合成的结构体数据,对采样间隔时间的设置可以通过两种方式实现,本文简要讲解其设置方式。 在设置采样间隔时候,会用到属性“ts”。 (1)对于单次实验,ts…

实景三维:穿越时空的奇妙之旅

实景三维:穿越时空的奇妙之旅 在科技的不断进步中,实景三维技术成为了现代社会中不可或缺的一部分。无论是电影、游戏还是建筑设计,实景三维都能够为我们带来身临其境的观感体验。本文将详细介绍实景三维的原理、应用以及未来的发展方向。 一…