Redis-3 数据持久化

一.什么是数据持久化?

redis是把数据存储在内存中的,而采用DRAM芯片存储的内存会面临断电导致数据丢失的问题,因此我们可以将redis在内存中的数据存储一份到磁盘中,用于内存数据丢失时的恢复,这个过程就叫做数据持久化。

二.如何实现数据持久化?

redis中提供了两种数据持久化技术:RDB和AOF。

  • RDB

1.介绍:Redis Database Backup file,redis数据备份文件,又叫做redis数据快照。是指将redis中的数据都存储到磁盘中,当redis故障重启后,会从磁盘中读取备份数据用于恢复。RDB有主动备份和自动备份两种备份方式。

2.主动备份

(1)save:由redis主进程来执行RDB,会阻塞其他进程的执行。

(2)bgsave:fork主进程得到一个子进程,由子进程来执行RDB,能避免影响主进程的运行。

3.自动备份

在redis.conf文件中设置自动备份的频率。自动备份一定是用子进程来执行的。

4.bgsave的执行原理

(1)操作系统中进程是无法访问物理地址的,进程只能操作逻辑地址,又通过页表将逻辑地址与物理地址产生映射。

(2)使用bgsave时,会fork主进程得到一个子进程,这个子进程会获取到主进程的页表,通过这个页表子进程就能访问到缓存在内存中的数据,并将这些数据写入磁盘。

(3)主进程和子进程拥有相同的页表,相当于共享一块缓存内存。

5.copy-on-write

为了防止发生读写冲突,fork采用的是copy-on-write技术:

(1)fork的时候,会将共享内存部分标记为read-only

(2)主进程执行读操作的时候,直接访问共享内存读取

(3)主进程执行写操作的时候,会对共享内存的数据拷贝一份,同时主进程的页表也将修改,重新映射到这份拷贝数据上,后续主进程对于缓存中数据的读写都是对这份拷贝数据进行。而子进程执行RDB的对象仍然是原来的共享数据,这样就不会发生读写冲突。

  • AOF

1.介绍:Append Only File,追加文件。redis会将执行的所有写命令都记录在AOF中,AOF可以看作是redis写命令的日志文件。当redis故障重启后,只要重新执行一遍AOF中的写命令就能恢复数据。

2.AOF技术通过刷盘策略来控制写命令写入AOF的频率

(1)always:同步刷盘,每执行一次写命令,就记录到AOF。

(2)everysec:每秒刷盘,写命令执行完先放到缓冲区,每隔1秒就将缓冲区中的命令写入AOF。

(3)no:操作系统控制,写命令执行完先放到缓冲区,由操作系统来决定何时将缓冲区中的命令写入AOF。

3.bgrewriteaof命令

(1)在记录写命令时,有可能会出现对同一个key进行多次写操作而产生多条写命令,这些写命令只有最后一条才是有意义的,却会被全部写入AOF。

(2)通过bgrewriteaof命令可以让AOF执行重写功能,相当于把那些对同一个key执行的写命令都去除掉,只保留最后一次写命令,用最少的命令达到相同的效果。

三.RDB和AOF哪一种恢复更快?

(1)RDB恢复更快,因为RDB是使用二进制存储的,文件更小,因此恢复就更快。

(2)但是RDB会有数据丢失的风险,如果在RDB执行备份之前redis就发生故障,会导致数据全部丢失。

(3)因此实际中常使用AOF来恢复数据,虽然AOF恢复数据比RDB慢,但是丢失数据的风险要比RDB小。通过设置刷盘策略来达到数据保存和性能的平衡。

(4)如果是对数据安全性要求很高的项目,通常会将RDB和AOF结合使用。

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

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

相关文章

完成单位投稿任务找投稿渠道不用精选10个1个就够了

在单位担任信息宣传员的这几年,我深刻体会到了“笔耕不辍”的艰辛与挑战。起初,面对单位的宣传需求,我遵循传统的投稿路径,即通过电子邮件的方式,一家接一家地向各大媒体投递稿件。那时的我,以为只要稿件质量上乘,自然能够获得青睐,却未曾料到,这是一条漫长而曲折的道路。 邮箱…

算法day03

第一题 179. 查找总价格为目标值的两个商品 本题采用前后指针和单调性规律可解; 解题思路如下: 1、设置前后指针 2、前后指针所指的两数之和大于目标数,右指针左移; 前后指针所指的两数之和小于目标数,左指针右移&…

“视频剪辑新境界:批量高效处理,画面虚化与播放速度调整一气呵成!“

在视频制作的广阔天地中,剪辑是赋予作品生命的关键环节。然而,面对大量的视频素材,如何高效地进行剪辑、调整,使每一帧画面都充满魅力,成为许多创作者面临的挑战。今天,我们为您带来一款颠覆性的视频剪辑工…

学习笔记:【QC】Android Q - IMS 模块

一、IMS init 流程图 高清的流程图参考:【高清图,保存后可以放大看】 二、IMS turnon 流程图 高清的流程图参考:【高清图,保存后可以放大看】 三、分析说明 1、nv702870 不创建ims apn pdp 2、nv702811 nv702811的时候才创建…

Objective-C的对象复制与拷贝选项

对象复制与拷贝 文章目录 对象复制与拷贝copy与mutablecopycopy与mutablecopy的简介示例:不可变对象的复制可变对象的复制 NSCopying和NSMutableCopying协议深复刻和浅复刻浅拷贝(Shallow Copy):深拷贝(Deep Copy&…

同步电机原理解析

同步电机 同步带年纪,顾名思义无论负载如何,都能以恒定的速度运转,它以高效率著称 这种恒速特性是通过恒定磁场和旋转磁场的相互作用实现的,与其他电机一样,同步电机由定子和转子组成,定子铁芯由硅片层叠而…

无人直播需要什么软件系统?最新AI实景自动无人直播软件:智能化引领直播拓客新时代

随着互联网的快速发展(无人直播招商加盟:hzzxar)直播行业已经成为商家品牌推广和商品销售的热门方式。近年来,人工智能技术的飞速发展,催生了一款令人惊叹的AI实景自动无人直播软件,为商家提供了全新的直播…

修改表空间的状态

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 表空间有4种状态:联机、脱机、只读和读写。修改其中某一种状态的语句如下所示 设置表空间 tspace 为联机状态。 SQL>ALTER TABLESPACE space ONLINE: 设置表空间 tspa…

Node.js身份证实名认证接口、身份证识别API

翔云OCR身份证查验集合了身份证号核验,身份信息核验,身份核验。 基于翔云身份证识别接口的Node.js开发示例代码如下: var request require(request); var options {method: POST,url: https://netocr.com/api/recogliu.do,headers: {},fo…

google地图js,添加标记,以及infowindow信息弹窗

&#xff08;谷歌地图版本V3&#xff09; var contentString "<div classdevinfo><P>设备ID: BJ-20240507</p> <P>设备状态: 正常</p> <P>通讯信号: 89% </p> <P>设备位置: 中国</p> <P>剂量率: 988</p&…

鸿蒙开发接口Ability框架:【(StaticSubscriberExtensionAbility)】

StaticSubscriberExtensionAbility StaticSubscriberExtensionAbility模块提供静态订阅者扩展能力的类别的能力。 说明&#xff1a; 本模块首批接口从API version 9 开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 本模块接口仅可在Stage模型下…

SpringBoot之Zuul服务

概述 Spring Cloud Netflix zuul组件是微服务架构中的网关组件,Zuul作为统一网关,是所有访问该平台的请求入口,核心功能是路由和过滤。 目前公司业务就是基于Zuul搭建的网关服务,且提供的服务包括转发请求(路由)、黑名单IP访问拦截、URL资源访问时的权限拦截、统一访问日志记…

【退役之重学Java】如何保证从消息队列里拿到的消息顺序执行

一、场景 MySQL binlog 同步数据&#xff0c;比如大数据team。在MySQL中进行增删改查&#xff0c;将其 binlog 发送到 MQ 里面&#xff0c;到消费出来执行&#xff0c;这里就必须要保证其顺序执行&#xff0c;不然数据库就会错乱。 二、如何保证消息的顺序性呢&#xff1f; …

【python】模拟巴特沃斯滤波器

巴特沃斯滤波器&#xff08;Butterworth Filter&#xff09;&#xff0c;以其设计者斯蒂芬巴特沃斯&#xff08;Stephen Butterworth&#xff09;的名字命名&#xff0c;是一种具有平滑频率响应的滤波器。这种滤波器在频域中具有非常平坦的无波纹响应&#xff0c;直到它达到截止…

【springboot基础】如何搭建一个web项目?

正在学习springboot&#xff0c;还是小白&#xff0c;今天分享一下如何搭建一个简单的springboot的web项目&#xff0c;只要写一个类就能实现最基础的前后端交互&#xff0c;实现web版helloworld &#xff0c;哈哈&#xff0c;虽然十分简陋&#xff0c;但也希望对你理解web运作…

ssm115乐购游戏商城系统+vue

毕业生学历证明系统 设计与实现 内容摘要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统毕业生学历信息管理难…

构建跨平台应用的利器——UniApp

UniApp简介 UniApp的概念与特点 UniApp 是一款基于 Vue.js 的跨平台应用框架&#xff0c;它允许开发者使用相同的代码构建同时运行在多个平台&#xff08;如Web、iOS和Android&#xff09;的应用程序。UniApp 具有以下几个主要特点&#xff1a; 跨平台能力&#xff1a;UniApp …

iOS 17 / iPad OS 17屏蔽更新

iOS 17 / iPad OS 17屏蔽更新 1&#xff0c;进入屏蔽iOS更新的描述文件下载链接 下载链接 wx 搜索 Geek 前端发送屏蔽更新进行获取 2&#xff0c;复制这段链接&#xff0c;在Safari浏览器中打开&#xff0c;注意打开后别点击下载&#xff01;要先改时间&#xff01; 3&#…

感知机简介

感知机简介 导语感知机简单逻辑电路实现权重和配置与/或/与非与门实现与非门实现或门实现 线/非线性单/多层感知机异或 总结参考文献 导语 学习感知机有助于更好的理解深度学习的神经元、权重等概念&#xff0c;感知机的结构和概念很简单&#xff0c;只要学过基本线性代数、数…

华为静态路由跨网段通信eNSP

拓扑图&#xff1a; 底层原理&#xff1a; 通信需要4个地址 源MAC 源IP 目标MAC 目标IP ARP地址解析协议 通过ip地址解析MAC 如果是相同的网段直接通过 arp直接发送广播 谁是192.168.1.2 我需要的MAC 1.2就会回应告诉 1.1他的MAC 1.1会封装4个地址 发送方的IP MAC 接受方IP和MA…