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

Redis的数据持久化

前言

本文主要介绍Redis的三种持久化方式、AOF持久化策略等

什么是持久化

持久化是指将数据在内存中的状态保存到非易失性介质(如硬盘、固态硬盘等)上的过程。在计算机中,内存中的数据属于易失性数据,一旦断电或重启系统,这些数据将会丢失。

Redis中的持久化

我们可以知道Redis是基于内存存储数据的一个中间件,他的数据是保存在内存中的,如果重启将面临数据丢失的风险,那么为了解决这个风险就必须进行对数据的持久化的保存,也就是得把数据从内存中拷贝到磁盘中进行维护。

在Redis中,持久化可以选择使用下面三种中的一种方式进行

1. 快照方式(RDB,Redis Database):将某一个时刻的数据,以二进制的方式写入磁盘
2. 文件追加方式(AOF,Append Only File):记录所有写操作命令,并以文件的形式追加到持久化文件中
3. 混合持久化方式:Redis4.0中新增的方式,结合RDB和AOF二者的优点,将当前数据以二进制写入到文件开头,后续执行的命令以AOF格式追加到文件中,这样不仅保证了Redis启动速度,又降低了数据丢失的风险

RDB 与 AOF 的特点及其二者区别

RDB

  • 工作原理: RDB是快照方式记录,将当前Redis中的数据以压缩二进制的形式写入到硬盘文件中,每次写入都是覆盖写入,代表了某个时间点的数据
  • 优点:
    • 效率高: 因为是二进制文件,可以被机器直接识别,没有翻译过程,恢复速度快
    • 文件较小: 相比于AOF,RDB文件体量更小
  • 缺点
    • 数据丢失: 由于RDB是快照的形式保存数据,如果快照之间发生故障,那么可能导致部分数据丢失(没来及全部备份,甚至说还没备份就故障了)

    • AOF

  • 工作原理: AOF是将Redis的写操作以日志的形式,将数据以追加的形式补充到日志文件中,在需要数据恢复时,通过复现文件中的命令来实现日志恢复
  • 优点:
    • 数据完整性好: AOF是以追加的方式写入日志文件中,通常比RDB保存的数据更为可靠,数据丢失率低
    • 可读性高: 因为是写入执行命令,更方便维护人员进行阅读维护
    • 多种持久化策略: 提供多种持久化策略,可以根据不同场景选择合适的一种方式
  • 缺点:
    • 文件较大: 因为是追加的形式上进行写,所以随着时间的增加,文件会越来越大
    • 对磁盘写入频繁: AOF持久化需要频繁的写入日志文件,对磁盘造成一定的写入压力

AOF的3种持久化策略

Always: 将每个写操作都追加到AOF文件中,即使是小的操作也会被追加。这是最安全的策略,可以确保数据的实时持久化,但也会带来较高的IO负载和磁盘空间占用。

Everysec: 每秒将写操作追加到AOF文件中。Redis会在每秒钟的间隔内将多个写操作合并到一起,并一次性将它们追加到AOF文件中。这种策略可以在一定程度上平衡数据的实时性和性能开销。

No: 不对AOF文件进行同步操作,由操作系统来处理文件的同步和持久化。这种策略会带来最高的性能,但也是最不安全的,如果发生突发性的故障,可能会导致数据的丢失和不一致。Linux默认30秒写入数据到磁盘

在以上三种策略中,默认情况下Redis使用的是"Everysec"策略,它在实践中提供了较好的性能和可靠性的平衡。

以上是本文全部内容
感谢阅读

相关文章:

Redis的数据持久化

前言 本文主要介绍Redis的三种持久化方式、AOF持久化策略等 什么是持久化 持久化是指将数据在内存中的状态保存到非易失性介质(如硬盘、固态硬盘等)上的过程。在计算机中,内存中的数据属于易失性数据,一旦断电或重启系统&#…...

CSS 选择器

前言 基础选择器 以下是几种常见的基础选择器。 标签选择器&#xff1a;通过HTML标签名称选择元素。 例如&#xff1a; p {color: red; } 上述样式规则将选择所有<p>标签 &#xff0c;并将其文字颜色设置为红色。 类选择器&#xff1a;通过类名选择元素。使用类选择…...

上位机工作总结(2023.03-2023.08)

1.工作总结 不知不觉&#xff0c;已经从C#转为Qt开发快半年了。这半年内&#xff0c;也是学习了很多C相关的开发技能&#xff0c;同时自己的技术栈也是进一步丰富&#xff0c;以后跑路就更容易啦&#xff0c;哈哈&#xff01;自己之前就有Winform和一些简单的Qt项目实践&#…...

APSIM模型参数优化 批量模拟丨气象数据准备、物候发育和光合生产、物质分配与产量模拟、土壤水分平衡算法、土壤碳氮平衡模块、农田管理模块等

随着数字农业和智慧农业的发展&#xff0c;基于过程的农业生产系统模型在模拟作物对气候变化的响应与适应、农田管理优化、作物品种和株型筛选、农田固碳和温室气体排放等领域扮演着越来越重要的作用。APSIM (Agricultural Production Systems sIMulator)模型是世界知名的作物生…...

Azure防火墙

文章目录 什么是Azure防火墙如何部署和配置创建虚拟网络创建虚拟机创建防火墙创建路由表&#xff0c;关联子网、路由配置防火墙策略配置应用程序规则配置网络规则配置 DNAT 规则 更改 Srv-Work 网络接口的主要和辅助 DNS 地址测试防火墙 什么是Azure防火墙 Azure防火墙是一种用…...

【LeetCode】剑指 Offer Ⅱ 第4章:链表(9道题) -- Java Version

题库链接&#xff1a;https://leetcode.cn/problem-list/e8X3pBZi/ 类型题目解决方案双指针剑指 Offer II 021. 删除链表的倒数第 N 个结点双指针 哨兵 ⭐剑指 Offer II 022. 链表中环的入口节点&#xff08;环形链表&#xff09;双指针&#xff1a;二次相遇 ⭐剑指 Offer I…...

Android SDK 上手指南|| 第三章 IDE:Android Studio速览

第三章 IDE&#xff1a;Android Studio速览 Android Studio是Google官方提供的IDE&#xff0c;它是基于IntelliJ IDEA开发而来&#xff0c;用来替代Eclipse。不过目前它还属于早期版本&#xff0c;目前的版本是0.4.2&#xff0c;每个3个月发布一个版本&#xff0c;最近的版本…...

Vue--》打造个性化医疗服务的医院预约系统(七)完结篇

今天开始使用 vue3 + ts 搭建一个医院预约系统的前台页面,因为文章会将项目的每一个地方代码的书写都会讲解到,所以本项目会分成好几篇文章进行讲解,我会在最后一篇文章中会将项目代码开源到我的GithHub上,大家可以自行去进行下载运行,希望本文章对有帮助的朋友们能多多关…...

点亮一颗LED灯

TOC LED0 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能APB2的外设时钟GPIO_InitTypeDef GPIO_Initstructure;GPIO_Initstructure.GPIO_Mode GPIO_Mode_Out_PP;//通用推挽输出GPIO_Initstructure.GPIO_Pin GPIO_Pin_5;GPIO_Initstructure.GPIO_Speed GPIO_S…...

SSH远程直连--------------Docker容器

文章目录 1. 下载docker镜像2. 安装ssh服务3. 本地局域网测试4. 安装cpolar5. 配置公网访问地址6. SSH公网远程连接测试7.固定连接公网地址8. SSH固定地址连接测试 在某些特殊需求下,我们想ssh直接远程连接docker 容器,下面我们介绍结合cpolar工具实现ssh远程直接连接docker容器…...

Python/Spring Cloud Alibaba开发--前端复习笔记(1)———— html5和css3.html基础

Python/Spring Cloud Alibaba开发–前端复习笔记&#xff08;1&#xff09;———— html5和css3.html基础 1)概述和基本结构 超文本标记语言。超文本指超链接&#xff0c;标记指的是标签。 基本结构&#xff1a; <!DOCTYPE html> 文档声明 <html lang”en”>…...

open cv学习 (十一)视频处理

视频处理 demo1 import cv2 # 打开笔记本内置摄像头 capture cv2.VideoCapture(0) # 笔记本内置摄像头被打开 while capture.isOpened():# 从摄像头中实时读取视频retval, image capture.read()# 在窗口中实时显示读取到的视频cv2.imshow("Video", image)# 等到用…...

函数栈帧理解

本文是从汇编角度来展示的函数调用&#xff0c;而且是在vs2013下根据调试展开的探究&#xff0c;其它平台在一些指令上会有点不同&#xff0c;指令不多&#xff0c;简单记忆一下即可&#xff0c;在我前些年的学习中&#xff0c;学的这几句汇编指令对我调试找错误起了不小的作用…...

【SA8295P 源码分析】70 - QAM8295P 原理图参考设计 之 DP、eDP 接口硬件原理分析

【SA8295P 源码分析】70 - QAM8295P 原理图参考设计 之 DP、eDP 接口硬件原理分析 一、DP 接口(Display Port)介绍二、高通参考硬件原理图分析2.1 高通 Display 接口框图介绍2.2 DP接口 Pin 定义介绍2.3 高通参考设计:DP2、DP3 硬件原理图2.4 高通参考设计:eDP0、eDP1 硬件…...

【CSS动画02--卡片旋转3D】

CSS动画02--卡片旋转3D 介绍代码HTMLCSS css动画02--旋转卡片3D 介绍 当鼠标移动到中间的卡片上会有随着中间的Y轴进行360的旋转&#xff0c;以下是几张图片的介绍&#xff0c;上面是鄙人自己录得一个供大家参考的小视频&#x1f92d; 代码 HTML <!DOCTYPE html>…...

数据结构<树和二叉树>顺序表存储二叉树实现堆排

✨Blog&#xff1a;&#x1f970;不会敲代码的小张:)&#x1f970; &#x1f251;推荐专栏&#xff1a;C语言&#x1f92a;、Cpp&#x1f636;‍&#x1f32b;️、数据结构初阶&#x1f480; &#x1f4bd;座右铭&#xff1a;“記住&#xff0c;每一天都是一個新的開始&#x1…...

理解docker命令

基础命令 帮助命令 docker --help&#xff08;帮助命令&#xff09; 用于获取某个命令的帮助信息 #命令帮助 docker 命令 --help 小技巧 换行符 \ 使用命令换符&#xff0c;可以让繁杂命令变得有条理 #命令换行&#xff0c;使用换行符 \ docker ... \... \ 镜像命令 d…...

【SA8295P 源码分析】16 - QNX侧 TouchScreen Panel (TP)线程函数 tp_recv_thread 源码分析

【SA8295P 源码分析】16 - QNX侧 TouchScreen Panel (TP)线程函数 tp_recv_thread 源码分析 一、TP 线程函数:tp_recv_thread()二、处理&上报 坐标数据 cypress_read_touch_data()系列文章汇总见:《【SA8295P 源码分析】00 - 系列文章链接汇总》 本文链接:《【SA8295P…...

第九章MyBatis的技巧

${}和#{}的区别 #{}给sql语句的占位符传值${}直接将值拼接到sql语句上&#xff0c;存在sql注入的现象 什么时候用${} 需要先对sql语句拼接&#xff0c;然后再编译。 字符串排序字段向SQL语句中拼接表名。比如根据日期生成日志表 批量删除 delete from car where in(${ids}…...

计算机技术与软件专业技术资格(水平)考试----系统架构设计师

【原文链接】计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试----系统架构设计师 考试简介 计算机软件资格考试是由国家人力资源和社会保障部、工业和信息化部领导下的国家级考试。计算机软件资格考试既是职业资格考试&#xff0c;又是职称资格考试。考试合格…...

使用nrm快速切换npm源以及解决Method Not Implemented

文章目录 什么是nrm如何使用nrm查看本机目前使用的npm 源安装nrm查看可选源查看当前使用源切换源添加源删除源测试源的响应时间 如果你遇到这个报错&#xff0c;就可以采用这种方案解决哦解决方案&#xff1a;1. 切换为官方源2. 查看漏洞3. 修复漏洞4. 下面命令慎重使用&#x…...

NVIDIA Jetson 项目:机器人足球比赛

推荐&#xff1a;使用 NSDT场景编辑器 助你快速搭建可二次编辑器的3D应用场景 事实上&#xff0c;整个比赛都致力于这个想法。RoboCup小型联盟&#xff08;SSL&#xff09;视觉停电技术挑战赛鼓励团队“探索本地传感和处理&#xff0c;而不是非车载计算机和全球摄像机感知环境的…...

【论文解读】Hybrid-SORT: Weak Cues Matter for Online Multi-Object Tracking

因为Hybrid-SORT的baseline是基于OCSORT进行改进的&#xff0c;在这之前建议先了解byteTrack和【】的相关知识 1.介绍 1.1 基本框架 多目标跟踪(MOT)将问题分为两个子任务。第一个任务是检测每个帧中的对象。第二个任务是将它们在不同的框架中联系起来。关联任务主要通过显式…...

Microsoft 图像BERT,基于大规模图文数据的跨模态预训练

视觉语言任务是当今自然语言处理&#xff08;NLP&#xff09;和计算机视觉领域的热门话题。大多数现有方法都基于预训练模型&#xff0c;这些模型使用后期融合方法融合下游任务的多模态输入。然而&#xff0c;这种方法通常需要在训练期间进行特定的数据注释&#xff0c;并且对于…...

vue3+elementUI-plus实现select下拉框的虚拟滚动

网上查了几个方案&#xff0c;要不就是不兼容&#xff0c;要不就是不支持vue3, 最终找到一个合适的&#xff0c;并且已上线使用&#xff0c;需要修改一下样式&#xff1a; 代码如下&#xff1a; main.js里引用 import vue3-virtual-scroller/dist/vue3-virtual-scroller.css; …...

学C的第三十四天【程序环境和预处理】

相关代码gitee自取&#xff1a; C语言学习日记: 加油努力 (gitee.com) 接上期&#xff1a; 学C的第三十三天【C语言文件操作】_高高的胖子的博客-CSDN博客 1 . 程序的翻译环境和执行环境 在ANSI C(C语言标准)的任何一种实现中&#xff0c;存在两个不同的环境。 &#xff0…...

微服务中间件--Ribbon负载均衡

Ribbon负载均衡 a.Ribbon负载均衡原理b.Ribbon负载均衡策略 (IRule)c.Ribbon的饥饿加载 a.Ribbon负载均衡原理 1.发起请求http://userservice/user/1&#xff0c;Ribbon拦截该请求 2.Ribbon通过EurekaServer拉取userservice 3.EurekaServer返回服务列表给Ribbon做负载均衡 …...

字符设备驱动实例(ADC驱动)

四、ADC驱动 ADC是将模拟信号转换为数字信号的转换器&#xff0c;在 Exynos4412 上有一个ADC&#xff0c;其主要的特性如下。 (1)量程为0~1.8V。 (2)精度有 10bit 和 12bit 可选。 (3)采样时钟最高为5MHz&#xff0c;转换速率最高为1MSPS (4)具有四路模拟输入&#xff0c;同一时…...

python基础5——正则、数据库操作

文章目录 一、数据库编程1.1 connect()函数1.2 命令参数1.3 常用语句 二、正则表达式2.1 匹配方式2.2 字符匹配2.3 数量匹配2.4 边界匹配2.5 分组匹配2.6 贪婪模式&非贪婪模式2.7 标志位 一、数据库编程 可以使用python脚本对数据库进行操作&#xff0c;比如获取数据库数据…...

SpringAOP原理:手写动态代理实现

0、基础知识 AOP我们知道&#xff0c;是在不修改源代码的情况下&#xff0c;为代码添加一些新功能的技术。通过动态代理&#xff0c;可以在不修改原始类代码的前提下&#xff0c;对方法进行拦截和增强。 动态代理常用于在不改变原有业务逻辑的情况下&#xff0c;对方法…...

做一个b2c网站/注册城乡规划师好考吗

文章目录PIL 基础语法一、 简介1、 基本介绍2、 特点3、 安装二、 Image 对象1、 实例化对象1.1 实例化1.2 图像模式2、 对象属性3、 格式转换3.1 save 方法3.2 convert 方法4、 图片缩放5、 创建缩略图6、 图像分离与合并6.1 split 方法6.2 merge 方法6.3 blend 方法7、 图像处…...

注册公司网站怎么收费/简述常用的网络营销方法

如题...

四川网站建设和优化/巨量引擎app

需求描述&#xff1a; 在工作中&#xff0c;有的时候需要在cmd中进行盘符的切换&#xff0c;以前总有些时候 通过cd来切&#xff0c;就是切换不过去&#xff0c;每次都要进行百度查询&#xff0c;所以&#xff0c;这次就记录下&#xff0c; 留着以后再用。 操作过程&#xff1a…...

陕西省人民政府采购网/曲靖seo

本文同步发布于 个人博客 前言 上周周赛因为忘记起床导致没打TAT 本次周赛战绩: rk5&#xff0c;总完成时间20min&#xff0c;还有奖品&#xff0c;好耶&#xff01; A 2129.将标题首字母大写 题意 给出一个包含若干个单词的句子&#xff0c;把所有字母变为小写字母&#…...

四川省第十五公司/上海seo网站推广

最初了解 NMock 是从 《程序员》2004.12上的 董洵 所写的 《将单元测试进行到底—Mock Object 浅析》&#xff0c;那真是一片不错的文章&#xff01; 在文章末尾的参考资料中&#xff0c;有一篇 MSDN杂志的文章Mock Objects to the Rescue! Test Your .NET Code with NMock &a…...

重庆免费网站建设/群排名优化软件官网

我正在用Qt编写一个应用程序&#xff0c;我想用插件扩展它。我的应用程序还有一个插件将使用的库。所以&#xff0c;我需要双向交流。基本上&#xff0c;插件可以调用库&#xff0c;加载插件的应用程序将调用它们。在现在&#xff0c;我的库用C编写&#xff0c;所以它有一些类。…...