当前位置: 首页 > news >正文

高级java每日一道面试题-2024年9月30日-服务器篇[Redis篇]-Redis持久化有几种方式?

如果有遗漏,评论区告诉我进行补充

面试官: Redis持久化有几种方式?

我回答:

  • Redis 是一个高性能的键值存储系统,常用于缓存、消息队列和实时数据分析等场景。为了保证数据的持久性,Redis 提供了两种主要的持久化方式:RDB(Redis Database Backup)和 AOF(Append Only File)。这两种方式各有优缺点,可以根据具体需求选择合适的持久化策略。

一、RDB(Redis DataBase)持久化

RDB 是一种快照形式的持久化方法,它会在指定的时间间隔内将内存中的数据集快照写入磁盘。RDB 文件是一个经过压缩的二进制文件,适合用于备份和灾难恢复。

定义
  • RDB是一种快照式的持久化方法,它定期将Redis内存中的数据生成快照(snapshot)并写入磁盘上的一个二进制文件中。这个文件包含了当前数据库的所有数据,包括键、值、数据类型等信息。
触发方式
  • 手动触发:通过执行SAVE或BGSAVE命令。其中,SAVE命令会阻塞Redis服务器,而BGSAVE命令在后台执行,不会阻塞Redis服务器的正常操作。
  • 自动触发:根据配置文件中设置的save规则(如save m n,表示m秒内数据发生n次修改时自动触发)自动进行快照。
特点
* RDB文件是经过压缩的二进制文件,体积小,便于备份和迁移。
* 恢复速度快,加载RDB文件可以直接重建数据集。
* 数据安全性相对较低,因为RDB文件是在某一时刻生成的,期间发生的更新可能丢失(取决于save规则间隔)。
优点
  • 性能高:RDB 持久化是通过 fork 子进程来完成的,主进程不会阻塞,因此对 Redis 性能影响较小。
  • 文件紧凑:RDB 文件是经过压缩的,占用的空间相对较小,适合用于备份和传输。
  • 恢复速度快:在服务器重启时,加载 RDB 文件的速度通常比 AOF 快。
缺点
  • 数据丢失风险:如果 Redis 在两次快照之间宕机,那么这段时间内的数据将会丢失。
  • fork 开销:在生成 RDB 文件的过程中,需要 fork 子进程,这可能会导致短暂的性能下降,特别是在大数据集的情况下。
配置
  • 可以通过 redis.conf 文件中的以下配置项来设置 RDB 持久化:

    save 900 1
    save 300 10
    save 60 10000
    
  • 上述配置表示:

    • 如果 900 秒内至少有 1 个键发生变化,则进行一次快照。
    • 如果 300 秒内至少有 10 个键发生变化,则进行一次快照。
    • 如果 60 秒内至少有 10000 个键发生变化,则进行一次快照。

二、AOF(Append Only File)持久化

AOF 是一种日志形式的持久化方法,它会记录服务器执行的所有写操作命令,并在服务器启动时重新执行这些命令以重建数据集。

定义
  • AOF持久化是将Redis执行的每一次写操作(即修改数据集的命令)以文本形式追加到一个日志文件中。这个文件包含了将数据库状态从空文件还原到当前状态所需的所有写操作。
配置方式
  • 通过配置文件redis.conf中的appendonly指令设置AOF持久化开启或关闭。
同步策略
* **always**:每条写命令都同步写入硬盘。
* **everysec**(默认):每秒将缓冲区内容写入硬盘,并且在后台异步刷盘。
* **no**:由操作系统决定何时同步,风险较高,容易丢失数据。
特点
* 数据安全性高,通过AOF文件可以精确还原写操作序列,丢失数据少。
* AOF文件大小通常大于RDB文件,且随写操作增多而增长。
* 重启恢复时,需要重新执行AOF文件中的所有命令,恢复速度相比RDB慢。
* 过度的写操作可能导致AOF文件过大,需要定期进行bgrewriteaof命令进行重写优化,将多条连续的写操作合并为更少的命令。
优点
  • 数据完整性:AOF 持久化可以提供更好的数据完整性,因为它记录了所有的写操作,即使服务器宕机,最多只会丢失最近的一个操作。
  • 可配置的同步策略:AOF 提供了不同的同步策略,如每秒同步、每次操作同步等,可以根据需求调整。
缺点
  • 文件较大:AOF 文件通常比 RDB 文件大,因为它是基于操作命令的日志。
  • 恢复速度较慢:在服务器重启时,AOF 文件的重放速度通常比 RDB 慢。
  • 性能开销:AOF 的写操作会有一定的性能开销,尤其是在高并发写入的情况下。
配置
  • 可以通过 redis.conf 文件中的以下配置项来设置 AOF 持久化:
appendonly yes
appendfsync everysec
  • 上述配置表示:

    • appendonly yes:启用 AOF 持久化。
    • appendfsync everysec:每秒钟同步一次 AOF 文件到磁盘。
  • 其他可用的 appendfsync 选项包括:

    • no:不主动同步,由操作系统决定何时同步。
    • always:每次写操作都同步,安全性最高但性能最低。

三、混合持久化

  1. 定义:Redis 4.0及以后版本支持混合持久化,即在执行BGSAVE时,既生成RDB文件,又将自上次RDB保存以来的增量AOF日志写入到RDB文件末尾。

  2. 优点

    • 利用RDB的快速加载特性快速恢复大部分数据。
    • 再通过加载增量AOF日志补全RDB之后的部分数据,确保数据完整性。
    • 一定程度上结合了RDB和AOF的优点,兼顾数据安全性和恢复速度。

四、总结

  • RDB 适用于需要快速恢复且对数据一致性要求不高的场景。
  • AOF 适用于对数据完整性要求较高的场景,尤其是当数据丢失会造成严重影响时。
  • 混合使用 可以结合两者的优点,提供更高的数据安全性和恢复速度。
    在实际应用中,可以根据业务需求选择合适的持久化策略。如果对数据丢失容忍度低,优先考虑AOF;如果追求快速恢复且有足够的备份机制,可选择RDB。同时,还可以考虑同时使用RDB和AOF两种持久化方式,以充分利用它们各自的优势。无论选择哪种持久化方式,都应配合定期备份策略,进一步增强数据保护。

相关文章:

高级java每日一道面试题-2024年9月30日-服务器篇[Redis篇]-Redis持久化有几种方式?

如果有遗漏,评论区告诉我进行补充 面试官: Redis持久化有几种方式? 我回答: Redis 是一个高性能的键值存储系统,常用于缓存、消息队列和实时数据分析等场景。为了保证数据的持久性,Redis 提供了两种主要的持久化方式:RDB(Redi…...

ICML 2024 论文分享┆一个简单且通用的交通预测提示调优框架

论文简介 本推文介绍了2024 ICML的优秀论文之一《FlashST: A Simple and Universal Prompt-Tuning Framework for Traffic Prediction》。论文的核心目标是通过整合空间和时间因素,精准地预测和分析交通流量的动态变化。然而,在交通预测领域&#xff0c…...

【C++打怪之路Lv4】-- 类和对象(中)

🌈 个人主页:白子寰 🔥 分类专栏:C打怪之路,python从入门到精通,数据结构,C语言,C语言题集👈 希望得到您的订阅和支持~ 💡 坚持创作博文(平均质量分82)&#…...

滚雪球学MySQL[1.1讲]:MySQL简介与环境配置

全文目录: 前言1. MySQL简介与环境配置1.1 MySQL简介什么是MySQLMySQL的历史和版本MySQL的应用场景 1.2 安装与配置安装MySQL(Windows、Linux、macOS)配置文件解析(my.cnf)启动与停止MySQL服务 1.3 MySQL客户端工具MyS…...

Llama微调以及Ollama部署

1 Llama微调 在基础模型的基础上,通过一些特定的数据集,将具有特定功能加在原有的模型上。 1.1 效果对比 特定数据集 未使用微调的基础模型的回答 使用微调后的回答 1.2 基础模型 基础大模型我选择Mistral-7B-v0.3-Chinese-Chat-uncensored&#x…...

中关村环球时尚产业联盟 东晟时尚产业创新中心成立

2024年9月6日,中关村环球时尚产业联盟与东晟时尚创新科技(北京)有限公司于中关村科技园东城园举行了隆重的战略合作签约仪式。 中关村科技园东城园领导发表了致辞,并表示东城区作为首都北京的核心区域,拥有深厚的历史…...

基于SSM的宠物领养管理系统的设计与实现 (含源码+sql+视频导入教程+文档+PPT)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的宠物领养管理系统2拥有两种角色 管理员:宠物分类管理、领养管理、宠物商品管理、用户管理、寄存管理、丢失信息管理、订单管理等 用户:登录注册、收藏评…...

为什么要配置环境变量?

在 Windows 操作系统中配置环境变量有多个重要的原因,这些原因与软件开发、系统管理和日常使用密切相关。以下是一些主要的原因: 1. 系统路径(PATH) 可执行文件的位置:PATH 环境变量用于指定操作系统在何处查找可执行…...

条件熵公式详细解释、举例说明计算步骤

公式 7-4 是条件熵的表达式: E ( Y ∣ X ) ∑ i 1 m p ( X x i ) E ( Y ∣ X x i ) E(Y|X) \sum_{i1}^m p(X x_i) E(Y | X x_i) E(Y∣X)i1∑m​p(Xxi​)E(Y∣Xxi​) 这个公式表示的是条件熵,它是衡量在已知某一特征 X X X 的情况下&#xff0c…...

颍川陈氏始祖陈寔逆势崛起的原由(一)不屈的努力

园子说颍川 按陈寔的出身,与当官是风马牛不相及的。 东汉末年的社会,朝中外戚、宦官当道,地方则由世家大族把持,郡县的政治经济资源都由他们掌控分配,平民以及中小地主很难有出头之日,弄不好就被兼并了。…...

golang小项目1-家庭收支记账系统

项目地址:golang小项目 参考资料:尚硅谷golang教程P229 家庭收支记账系统 1. 系统简介 1.1 项目背景 在现代社会中,家庭的财务管理显得尤为重要。随着生活成本的不断上升,家庭需要有效地记录和分析收支情况,以确保…...

Visual Studio Code下载安装及汉化

官网:https://code.visualstudio.com/ 按照指示一步步操作即可: 汉化:...

MySQL—触发器详解

基本介绍 触发器是与表有关的数据库对象,在 INSERT、UPDATE、DELETE 操作之前或之后触发并执行触发器中定义的 SQL 语句。 触发器的这种特性可以协助应用在数据库端确保数据的完整性、日志记录、数据校验等操作。 使用别名 NEW 和 OLD 来引用触发器中发生变化的记…...

钉钉H5微应用Springboot+Vue开发分享

文章目录 说明技术路线注意操作步骤思路图 一、创建钉钉应用二、创建java项目三、创建vue项目(或uniapp项目),npm引入sdk的依赖四、拥有公网域名端口。开发环境可以使用(贝锐花生壳等工具)五、打开钉钉开发者平台&…...

项目:微服务即时通讯系统客户端(基于C++QT)]四,中间界面搭建和逻辑准备

四,中间界面搭建 前言:当项目越来越复杂的时候,或许画草图是非常好的选择 一,初始化中间窗口initMidWindow void mainWidget::initMidWindow() {//使用网格布局进行管理QGridLayout* layout new QGridLayout();//距离上方 20px 的距离&…...

【C语言】指针详解(一)

个人主页 : zxctscl 如有转载请先通知 文章目录 1.内存与地址2.指针变量与地址2.1 取地址操作符&2.2 指针变量2.3 指针类型2.4 解引用操作符2.5 指针变量的大小 3. 指针变量类型的意义3.1 指针的解引用 4. const修饰指针4.1 const修饰变量4.2 const修饰指针变量…...

unity3D雨雪等粒子特效不穿透房屋效果实现(粒子不穿透模型)

做项目有时候会做天气模拟,模拟雨雪天气等等。但是容易忽略一个问题,就是房屋内不应该下雨或者下雪,这样不就穿帮了嘛。 下面就粒子穿透物体问题做一个demo。 正常下雨下雪在室内的话,你可以看到,粒子是穿透建筑的。 那要怎么模拟真实的雨雪天气,不让粒子穿透房屋建筑呢…...

ROS2安装cartographer

2. 安装Cartographer和Cartographer ROS 使用apt安装(推荐): bash sudo apt install ros-humble-cartographer-ros或者,从源代码安装: bash sudo apt-get update sudo apt-get install -y python3-wstool python3…...

kafka测试

1】确认 ZooKeeper 服务状态 为了进一步确认 ZooKeeper 服务的状态,你可以执行以下操作: 检查 ZooKeeper 服务状态: docker ps 确保 ZooKeeper 容器正在运行。 检查 ZooKeeper 日志: docker logs zookeeper 查看最新的日志条目&…...

总结C/C++中内存区域划分

目录 1.C/C程序内存分配主要的几个区域: 2.内存分布图 1.C/C程序内存分配主要的几个区域: 1、栈区 2、堆区 3、数据段(静态区) 4.代码段 2.内存分布图 如图: static修饰静态变量成员——放在静态区 int globalVar 是…...

第168天:应急响应-ELK 日志分析系统Yara规则样本识别特征提取规则编写

目录 案例一:ELK 搭建使用-导入文件&监控日志&语法筛选 案例二:Yara 规则使用-规则检测&分析特征&自写规则 案例一:ELK 搭建使用-导入文件&监控日志&语法筛选 该软件是专业分析日志的工具,但是不支持安…...

MySQL 面试题及答案

MySQL 面试题及答案: 一、基础问题 什么是数据库索引?有哪些类型? 答:数据库索引是一种数据结构,用于提高数据库查询的效率。它就像一本书的目录,可以快速定位到特定的数据行。 类型主要有: …...

vue仿chatGpt的AI聊天功能--大模型通义千问(阿里云)

vue仿chatGpt的AI聊天功能–大模型通义千问(阿里云) 通义千问是由阿里云自主研发的大语言模型,用于理解和分析用户输入的自然语言。 1. 创建API-KEY并配置环境变量 打开通义千问网站进行登录,登陆之后创建api-key,右…...

养老院管理系统(含源码+sql+视频导入教程+文档)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 养老院管理系统拥有两种角色:管理员和护工 管理员:用户管理、老人信息管理、事故记录管理、入住费用管理、护工薪资管理、护工请假管理、床位管理、请假管理等 护…...

大数据的挑战是小文件

小文件可能会给存储平台及其支持的应用程序带来大问题。在 Google 上搜索 “small files performance” 会产生 2M 的结果。这篇博文将更深入地研究小文件问题,深入研究其根源并总结解决方案。 问题陈述 出于本讨论的目的,小文件通常被视为小于 64 KB …...

迁移学习案例-python代码

大白话 迁移学习就是用不太相同但又有一些联系的A和B数据,训练同一个网络。比如,先用A数据训练一下网络,然后再用B数据训练一下网络,那么就说最后的模型是从A迁移到B的。 迁移学习的具体形式是多种多样的,比如先用A训练…...

MCUboot 和 U-Boot区别

MCUboot 和 U-Boot 都是用于嵌入式系统的引导加载程序,但它们在一些方面存在区别: 功能特性 安全特性侧重不同 MCUboot :更专注于安全引导方面,强调安全启动、固件完整性验证和加密等安全功能。它提供了强大的安全机制来防止恶意…...

Apache OFBiz SSRF漏洞CVE-2024-45507分析

Apache OFBiz介绍 Apache OFBiz 是一个功能丰富的开源电子商务平台,包含完整的商业解决方案,适用于多种行业。它提供了一套全面的服务,包括客户关系管理(CRM)、企业资源规划(ERP)、订单管理、产…...

计算机毕业设计 饮食营养管理信息系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...

828华为云征文|华为云Flexus云服务器X实例部署——盲盒抽奖商城系统以及编译发布小程序

盲盒抽奖商城系统使用 thinkphp6.0 uniapp 开发,做到了全移动端兼容。一个系统不仅可以打包 小程序 还可以 打包APP ,H5 华为云Flexus云服务器X实例在安装搭建盲盒商城小程序方面具有显著优势,这些优势主要体现在以下几个方面: …...

建网站底部怎么做的/独立站seo怎么做

一、修改httpd.conf文件 编辑配置文件&#xff1a; 目录&#xff1a;%xampp\apache\conf\httpd.conf#确认以下是否开启Include conf/extra/httpd-vhosts.conf#修改<Directory />参数<Directory />#AllowOverride none#Require all deniedOptions AllAllowOverride …...

网站建设技术论坛/设计好看的网站

实验题目 扩展银行项目&#xff0c;添加一个 Customer 类。Customer 类将包含一个 Account对 象。 实验目的 使用引用类型的成员变量。 提 示 在banking包下的创建Customer类。该类必须实现上面的UML图表中的模 型。 声明三个私有对象属性&#xff1a;firstName、lastName…...

即墨公司做网站/百度资讯

C 预处理指令#pragma 一、定义介绍 #pragma是C预处理指令的一种&#xff0c;它可以设置编译器的状态&#xff0c;或者让编译器完成一些特定的工作。因此&#xff0c;它是一种操作编译器的指令。 二、功能作用 #pragma的作用是让编译器执行一些已经设定好的工作。通过#pragma后…...

十年前网站开发语言/安卓内核级优化神器

1 静态方法加载几次&#xff1f; 2 类内方法需要加static吗&#xff1f;类外方法呢&#xff1f; 3 class aa{} BOO xx(){} bb.x() cc.row上方代码分别是什么含义&#xff1f; 4 判断返回值类型应看哪里&#xff1f; 5 定义成员变量的方式有几种&#xff1f;可以直接在成员变量下…...

怎么做时时彩网站代理/百度seo关键词优化电话

问题描述&#xff1a; 表: Employee ------------------- | Column Name | Type | ------------------- | id | int | | salary | int | ------------------- Id是该表的主键列。 该表的每一行都包含有关员工工资的信息。 编写一个SQL查询来报告 Employee 表…...

武汉设计公司网站/百度查看订单

市调机构TrendForce乐观预计今年二季度华为在全球市场的智能手机出货量将超越苹果夺得第二的位置&#xff0c;这也将是它首次在季度出货量上夺取这个位置。华为增势向好据IDC的数据&#xff0c;今年一季度全球智能手机市场出货量前五名分别是三星、苹果、华为、小米、OPPO&…...