面试题: Redis的数据备份

news2024/11/27 10:24:51

1 RDB

RDB全称为Redis Database Backup file ,也被叫做Redis数据快照,简单来说就是将当前的所有数据都记录打哦磁盘中,当redis故障重启时,从磁盘读取快照文件进行数据恢复。

连接客户端后,使用save命令进保存,但是由主进程执行,会阻塞所有命令。

使用bgsave可以开启子线程执行RDB

其实为了防止Redis宕机,而没有进行数据保存。Redis内部有触发RDB的机制。

RDB的其他配置也可以在redis.conf文件中设置

RDB的fork

上文提到,执行bgsave会开启一个子进程进行数据保存,这个过程是异步的。但是bgsave开始时会fork主进程得到子进程。子进程共享主进程的内存,这个fork的过程是阻塞的

在fork的过程中仅仅拷贝页表(与物理内存的映射关系),因此速度是非常快的。但是由于子进程是异步进行数据存储的,主线程也会进行写操作。

fork采用的是copy-on-write技术:

  • 当主进程执行读操作时,访问共享内存;

  • 当主进程执行写操作时,则会拷贝一份数据,执行写操作

RDB方式bgsave的基本流程?
1、fork主进程得到一个子进程,共享内存空间
2、子进程读取内存数据并写入新的RDB文件
3、用新RDB文件替换旧的RDB文件
RDB会在什么时候执行? save 60 1000代表什么含义?
1、默认是服务停止时
2、代表60秒内至少执行1000次修改则触发RDB
RDB的缺点?
1、RDB执行间隔时间长,两次RDB之间写入数据有丢失的风险
2、fork子进程、压缩、写出RDB文件都比较耗时
3、在没有触发RDB之前数据存在丢失的风险。

2 AOF

AOF全称为Append Only File(追加文件),Redis处理的每个写命令都会保存到AOF中。AOF默认是关闭的需要进行配置。

AOF的命令记录频率也可以进行修改

因为是记录命令,AOF文件会比RDB文件大的多。而目AOF会记录对同一个kev的多次写操作,但只有最后一次写操作才有意义。通过执行bgrewriteaof命令,可以让AOF文件执行重写功能,用最少的命令达到相同效果。

bgrewriteaof的效果

总结

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

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

相关文章

设置Visual Studio 2022背景图

前言 编写代码时界面舒服,自己喜欢很重要。本篇文章将会介绍VS2022壁纸的一些设置,主题的更改以及如何设计界面。 理想的界面应该是这样的 接下来我们来一步步学习如何将界面设计成这样 一、壁纸插件下载 1.拓展->点击拓展管理 2.右上角搜索backgro…

【shell 编程大全】shell 变量的定义以及使用

shell 变量定义 以及使用从此刻开始跟我一起学习shell 相关知识吧 前情回顾 上一章节【shell 前奏知识】 我们已经学习了很多shell的必备知识,让我们一起来回顾下。 shelll的存放位置如何切换shellshell文件中的注释有哪些查看当前系统的shell类型执行shell的n种方…

ubuntu20.04如何安装nvidia-docker?

文章目录安装步骤导入 NVIDIA GPG 密钥添加 NVIDIA Docker 存储库安装 nvidia-container-toolkit检查nvidia-docker是否安装成功安装步骤 导入 NVIDIA GPG 密钥 curl -s https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -添加 NVIDIA Docker 存储库 dist…

2010-2019年290个地级市经济发展与城市绿化数据

2010-2019年290个地级市经济发展与城市绿化数据 1、时间:2010-2019年 2、来源:城市统计NJ,缺失情况与NJ一致 3、范围:290个地级市 4、指标: 综合经济:地区生产总值、人均地区生产总值、地区生产总值增…

开源的电子邮件客户端Cypht

网友 OOXX 在找好用的 webmail,老苏觉得 Cypht 还不错 什么是 Cypht ? Cypht 是一个简单、轻量级和现代的 Webmail 客户端,它将多个帐户聚合到一个界面中。除了电子邮件帐户,它还支持 Atom/RSS 源。 安装 建数据库 数据库直接用…

MySQL数据库03——数据表的创建、修改和删除

接着上一章的内容,第一章安装好了Mysql和对应的编译器workbench,并且简单的创造了一个数据库college,第二章了解了SQL基础的动词和数据类型。这一章我们学习怎么用这些动词,在这个college库里面创建数据表,并且修改删除…

学习周报-2023-0210

文章目录一 在SUSE11sp3系统中将openssh从6升级到8一 需求二 系统环境三 部署流程1.上传编译安装的软件包2.安装 gcc编译软件3.安装依赖zlib4.安装依赖openssl5.安装openssh二 在CentOS-6.9配置apache服务(3)---虚拟主机配置一 定义二 系统环境三 基于域…

浅解ThreadLocal

我们知道的是synchronized能够解决线程安全中的内存可见性问题(让每个线程读取到的变量一致),而ThreadLocal恰好相反,它是让每个线程都有处理任务过程中不同的值。而我们通过代码发现他确实可以实现这样的功能package executor;/*…

chatgpt注册问题解决. You‘ve made too many phone verification requests.

本来想多注册chagpt几个号,发现注册不了了 错误:You’ve made too many phone verification requests. Please try again later or contact us through our help center at help.openai.com. 或者错误:We’ve detected suspicious behavior…

Java数据结构中二叉树的深度解析及常见OJ题

本篇文章讲述Java数据结构中关于二叉树相关知识及常见的二叉树OJ题做法讲解(包含非递归遍历二叉树) 目录 一、二叉树 1.1二叉树概念 1.2特殊的二叉树 1.3二叉树性质 1.4二叉树基本性质定理题 1.5二叉树遍历基本操作 1.6二叉树遍历的前中后非递归写法 1.7…

聚观早报 | 货拉拉入局跑腿业务;苹果任命首位首席人力资源官

今日要闻:谷歌AI聊天机器人Bard股价大跌7.4%;货拉拉入局跑腿业务;苹果任命首位首席人力资源官;迪士尼宣布裁员 7000 人;家乐福中国 COO 离职 谷歌AI聊天机器人Bard股价大跌 7.4% 2 月 8 日消息,谷歌人工智能…

一篇五分生信临床模型预测文章代码复现——FIgure 9.列线图构建,ROC分析,DCA分析 (四)

之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…

软件使用【SecureCRT】 SSH连接报错Key exchange failed

目录 一、原因分析 二、解决方法 三、修改文件方法 1、修改ssh_config 2、修改sshd_config 3、重新启动服务 SecureCRT连接服务器时报错,报错信息为: Key exchange failed. No compatible key exchange method. The server supports these methods…

轨迹预测算法vectorNet调研报告

前言 传统的行为预测方法是规则的,基于道路结构的约束生成多个行为假设。最近,很多基于学习的预测方法被提出。他们提出了对于不同行为假设的进行概率解释的好处,但是需要重构一个新的表示来编码地图和轨迹信息。有趣的是,虽然高精…

【论文阅读】TDANet:一种具有自上而下注意力的用于语音分离的高效自编码器架构(ICLR 2023)

TDANet: 一种具有自上而下注意力的用于语音分离的高效自编码器架构 文章目录TDANet: 一种具有自上而下注意力的用于语音分离的高效自编码器架构速览摘要方法PipelineTDANet实验总结速览 下载收录源码机构演示arxivICLR 2023PyTorch清华大学Demo inproceedings{tdanet2023iclr,…

Redis应用场景

redis的五种基本数据类型结构类型结构存储的值结构的读写能力String字符串可以是字符串、整数或浮点数对整个字符串或字符串的一部分进行操作;对整数或浮点数进行自增或自减操作;List列表一个链表,链表上的每个节点都包含一个字符串对链表的两…

Docker进阶 - 9. docker network 之自定义网络

1. 运行两个tomcat实例,并进入容器内部 docker run -d -p 8081:8080 --name tomcat81 billygoo/tomcat8-jdk8 docker exec -it tomcat81 bashdocker run -d -p 8082:8080 --name tomcat82 billygoo/tomcat8-idk8 docker exec -it tomcat82 bash2. ping一下各自的ip…

Windeployqt 打包,缺少dll 的解决方法

Windeployqt 打包,缺少DLL 的原因分析,解决方法 很多同学使用工具windeployqt进行打包发布后,运行exe文件时,还是会出现下图所示的系统错误提示,这种情况就表示相关的DLL 库文件没有被正确打包。可是windeployqt明确显…

20230210使AIO-3568J开发板在Android12下调通3个USB

20230210使AIO-3568J开发板在Android12下调通3个USB 2023/2/10 10:00 0、默认编译RK3568的Andorid12的rk3568-evb2-lp4x-v10.dts,2个USB2.0接口的鼠标可以用。 并列USB3.0接口的上面的鼠标不能用。USB3.0接口下面可以连接ADB。 vcc5v0_host: vcc5v0-host-regula…

邀您参赛!DCIC 2023「科技金融欺诈风险识别」算法赛正在报名中

近年来,跨境赌博、电信网络诈骗、黑产等外部欺诈违法犯罪形势日益严峻,呈现线上化、产业化、团伙化等特征,国家、监管机构及银行自身都高度重视反欺诈治理工作,坚决守护人民群众的财产安全。 为进一步打击外部欺诈违法犯罪行为&am…