2、Redis持久化详解

Redis持久化详解

文章目录

  • Redis持久化详解
    • 前言
    • RDB和AOF的区别
    • RDB和AOF的优缺点
    • Redis 持久化配置
    • 1、RDB持久化配置
    • 2、AOF持久化配置(尝试修复会删除aof文件内容)
    • 3、AOF 重写功能
        • 新增知识点:
        • 新增知识点:

前言

Redis是一种高级 key-value 型的NoSQL数据库。它跟memcached类似是内存型数据库,不过Redis数据可以做持久化,即内存中的数据可以同步到磁盘进行存储。而且Redis所支持的数据类型很丰富。有字符串,链表,集合和有序集合等。Redis支持在服务器端计算集合的并交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构型服务器。

Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为"半持久化模式"RDB);也可以把每一次数据变化都写入到一个 append only file(AOF)里面(这称为"全持久化模式")。

Redis的数据都存放在内存中,如果没有配置持久化功能,Redis重启后数据就全丢失了,于是需要开启Redis的持久化功能,将数据保存到磁盘上,当Redis重启后,可以从磁盘中恢复数据。Redis提供两种方式进行持久化,一种是RDB 持久化(原理是将 Redis在内存中的数据库记录定时 dump 到磁盘上的 RDB持久化),另外一种是 AOF(append only file)持久化(原理是将Redis的操作日志以追加的方式写入文件)。那么这两种持久化方式有什么区别呢,改如何选择呢?

RDB和AOF的区别

RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork
一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。
在这里插入图片描述

AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作。查询操作不会记录(类似于MySQL数据库的Binlog),以文本的方式记录,可以打开文件看到详细的操作记录。
在这里插入图片描述

RDB和AOF的优缺点

RDB存在哪些优势呢?

  1. 一旦采用该方式,那么你的整个Redis数据库将只包含一个文件,这对于文件备份而言是非常完美的。比如,你可能打算每个小时归档一次最近24小时的数据,同时还要每天归档一次最近30天的数据。通过这样的备份策略,一旦系统出现灾难性故障,我们可以非常容易的进行恢复。

  2. 对于灾难恢复而言,RDB是非常不错的选择。因为我们可以非常轻松的将一个单独的文件压缩后再转移到其它存储介质上。

  3. 性能最大化。对于Redis的服务进程而言,在开始持久化时,它唯一需要做的只是fork出子进程,之后再由子进程完成这些持久化的工作,这样就可以极大的避免服务进程执行IO 操作了。

  4. 相比于AOF机制,如果数据集很大,RDB的启动效率会更高。

RDB又存在哪些劣势呢?

  1. 如果想保证数据的高可用性,即最大限度的避免数据丢失,那么RDB将不是一个很好的选择。因为系统一旦在定时持久化之前出现宕机现象,此前没有来得及写入磁盘的数据都将丢失。

  2. 由于RDB是通过fork子进程来协助完成数据持久化工作的,因此,如果当数据集较大时,可能会导致整个服务器停止服务几百毫秒,甚至是1秒钟。

AOF 的优势有哪些呢?

  1. 该机制可以带来更高的数据安全性,即数据持久性。Redis中提供了3种同步策略,即每秒同步、每修改同步和不同步。事实上,每秒同步也是异步完成的,其效率也是非常高的,所差的是一旦系统出现宕机现象,那么这一秒钟之内修改的数据将会丢失。而每修改同步,我们可以将其视为同步持久化,即每次发生的数据变化都会被立即记录到磁盘中。可以预见,这种方式在效率上是最低的。

  2. 由于该机制对日志文件的写入操作采用的是 append(追加)模式,因此在写入过程中即使出现宕机现象,也不会破坏日志文件中已经存在的内容。然而如果我们本次操作只是写入了一半数据就出现了系统崩溃问题,不用担心,在Redis下一次启动之前,我们可以通过redis-check-aof工具来帮助我们解决数据一致性的问题。

  3. 如果日志过大,Redis可以自动启用rewrite机制。即Redis以append模式不断的将修改数据写入到老的磁盘文件中,同时Redis还会创建一个新的文件用于记录此期间有哪些修改命令被执行。因此在进行rewrite 切换时可以更好的保证数据安全性。

  4. AOF包含一个格式清晰、易于理解的日志文件用于记录所有的修改操作。事实上,我们也可以通过该文件完成数据的重建。

AOF 的劣势有哪些呢?

  1. 对于相同数量的数据集而言,AOF文件通常要大于RDB文件。RDB在恢复大数据集时的速度比AOF的恢复速度要快。

  2. 根据同步策略的不同,AOF在运行效率上往往会慢于RDB。总之,每秒同步策略的效率是比较高的,同步禁用策略的效率和RDB一样高效。

二者选择的标准,就是看系统是愿意牺牲一些性能,换取更高的缓存一致性(aof),还是愿意写操作频繁的时候,不启用备份来换取更高的性能,待手动运行save的时候,再做备份(rdb)。

Redis 持久化配置

1、RDB持久化配置

Redis会将数据集的快照dump到dump.rdb文件中。此外,我们也可以通过配置文件来修改Redis服务器dump快照的频率,在打开
6379.conf文件之后,我们搜索save可以看到下面的配置信息:

  • save 900 1 #在900秒(15
    分钟)之后,如果至少有1个key发生变化,则dump内存快照。

  • save 300 10 #在300秒(5
    分钟)之后,如果至少有10个key发生变化,则dump内存快照。

  • save 60 10000 #在60秒(1
    分钟)之后,如果至少有10000个key发生变化,则dump内存快照。

注意:RDB正常退出会保存,非法退出不保存(比如直接killall) 也可用save命令手动保存

关掉主从复制

[root@redis ~<

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

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

相关文章

curl 命令详解

curl 命令的 -d/–data 和 --data-urlencode 的区别 curl 命令的 -d/–data 和 --data-urlencode 都用于发送 HTTP POST 请求的数据&#xff0c;但关键区别在于 是否自动对数据进行 URL 编码。以下是详细对比&#xff1a; curl 命令的 -d/--data 和 --data-urlencode 都用于发送…

ubuntu下好用的录屏工具

以下是 vokoscreen 的安装教程&#xff0c;适用于 Linux 系统。vokoscreen 是一款简单易用的屏幕录制工具&#xff0c;支持录制屏幕、摄像头和音频。 安装 vokoscreen vokoscreen 提供了多种安装方式&#xff0c;包括通过包管理器、Deb 包或 AppImage 文件。 方法 1&#xf…

笔试大题20分值(用两个栈实现队列)

目录前言一、原题二、解题思路三、代码实现&#xff08;c/c&#xff09;C语言代码C代码实现结语前言 目前博主在处于秋招求职的关键时期&#xff0c;在暑假这段时间会频繁更新博客&#xff0c;想在暑假期间把一些常考的面试和笔试题过一下&#xff0c;利用这两个月沉淀一下技术…

【知识扫盲】tokenizer.json中的vocab和merges是什么?

在自然语言处理里&#xff0c;tokenizer.json 文件一般是由 Hugging Face 的 Tokenizers 库生成的&#xff0c;它是分词器配置的核心文件。这里面的 vocab 和 merges 是子词分词算法&#xff08;像 BPE 这种&#xff09;的重要构成要素。下面为你详细解释它们的作用和工作原理&…

【安卓笔记】RxJava的Hook机制,整体拦截器

0. 环境&#xff1a; 电脑&#xff1a;Windows10 Android Studio: 2024.3.2 编程语言: Java Gradle version&#xff1a;8.11.1 Compile Sdk Version&#xff1a;35 Java 版本&#xff1a;Java11 1. 使用场景 整个项目都是用了RxJava&#xff0c;需要对 整个/部分 项目…

NX二次开发常用函数——从一个坐标系到另一个坐标系的转换(UF_MTX4_csys_to_csys )相同体坐标转化

再做项目时相信大家都会用到坐标转化,例如,我之前写的案例分享中的博客都用到过,之前总是找借口进行if else判断,虽然可以实现,但是比起坐标变换无论代码复杂程度还是运行速度都比较差,之前参加过曹大师的教学训练营,但是明显感觉到大佬写代码的逻辑性以及模块化能力都比…

数据库防止数组字符串序列化

请求接到数组["aa","bb"]后,后端需要转换成字符串Java 8 使用 String.join()String[] arr {"aa", "bb"}; String str String.join(",", arr); // "aa,bb"如果采用其他转换,在字段存入数据库后会["\"a…

若依框架文件上传返回路径端口错误 - Nginx代理环境下serverConfig.getUrl()获取端口异常

目录一 、问题描述二、问题现象三、问题根本原因3.1 代码分析3.2 问题核心四、解决方案五、总结一 、问题描述 在使用若依框架进行项目开发时&#xff0c;遇到了一个令人困扰的问题&#xff1a;文件上传功能在本地开发环境运行正常&#xff0c;但部署到服务器后&#xff0c;上…

使用PyInstaller打包 Python 工程

引言:大模型是个好工具,尽管好多内容都是拼凑的,但是整理学到的就是自己的。因工作需要隐藏python源代码,方法有PyInstaller 、Cpython等多种方法,PyInstaller更为常用,PyInstaller打包 Python 工程步骤整理如下: 一、确保系统环境准备就绪 安装 Python 和 pip 确认版本…

Python 程序设计讲义(1):PyCharm 安装教程

Python 程序设计讲义&#xff08;1&#xff09;&#xff1a;PyCharm 安装教程 一、安装 Python 解释器 1、下载 Python 安装文件 点击如下链接进入 Python 官网&#xff1a; https://www.python.org/ 在弹出的页面中单击【Downloads】&#xff0c;然后单击下面的【Download Pyt…

uniapp云打包安卓

1、基础云打包 2、修改logo3、怎么实现下拉菜单4、修改启动页启动页默认这样 5、URL Scheme页面跳转

Python----NLP自然语言处理(英文分词器--NLTK)

一、NLTK_介绍NLTK&#xff08;Natural Language Toolkit&#xff0c;自然语言处理工具包&#xff09;&#xff0c;一个主要用于清洗和处理英文文本的Python工具包。它有很多的功能&#xff0c;我们主要使用的是它的分词功能&#xff0c;之前讲过中文分词是比较复杂的&#xff…

传统浏览器过时了?Dia如何用AI重新定义上网体验

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事&#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交给时间 &#x1f3e0; &#xff1a;小破站 传统浏览器过时了&#xff1f;Dia如何用AI重新定义上网体验它是什么核心功能搜索编程左右互动感谢…

基于DTLC-AEC与DTLN的轻量级实时语音增强系统设计与实现

基于DTLC-AEC与DTLN的轻量级实时语音增强系统设计与实现 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 1. 引言 在当今的互联网通信时代,实时语音通信已成为人们日常生活中不可或缺的一部分。然而,语音通信质量常…

Attu-Milvus向量数据库可视化工具

本文介绍了如何安装可视化工具Attu&#xff0c;包括使用Docker镜像启动并访问Attu服务。 目录 前言 一、Attu安装 1. Docker容器安装 2. 桌面程序安装 二、使用 Milvus Web U 前言 Attu是一款专为Milvus向量数据库打造的开源数据库管理工具&#xff0c;提供了便捷的图形化…

高效检测数据突变的MDAM算法详解

在数据分析领域&#xff0c;我们经常需要检测数据序列中的异常变化。今天给大家介绍一种简单但非常有效的算法——MDAM (Mean Drift Accumulation Monitor)&#xff0c;它能帮你轻松发现数据中的均值突变现象&#xff01;1. &#x1f50d; 算法原理累计数均值突变检测算法(MDAM…

记录一道sql面试题3

题目&#xff1a;有一张表a,和一张表ba:id age name1 18 kethy2 32 kavin3 22 tonyb:id dept description2 sale today2 dev sunday提问&#xff1a;将a和b两张表左连接查询&#xff0c;条件是a.id b.id会得到什么结果。查询的字段为a.*,b.* 。说明&#xff1a;左表 a 中 id1 …

linux系统------LVS+KeepAlived+Nginx高可用方案

目录 一、环境搭建 1.环境准备 2.安装ipvsadm 和 安装 keepalived&#xff08;Lvs服务器&#xff09; 3.为两台RS配置虚拟ip&#xff08;nginx服务器&#xff09; 1.配置虚拟网络子接口&#xff08;回环接口&#xff09; 2.修改内容如下: 3.配置ARP 二、KeepalivedLvsN…

【MySQL】性能优化实战指南:释放数据库潜能的艺术

文章目录MySQL性能优化实战指南&#xff1a;释放数据库潜能的艺术&#x1f680; 引言为什么需要MySQL性能优化&#xff1f;&#x1f4cb; 性能优化基础知识MySQL性能瓶颈分析1. 硬件资源瓶颈2. MySQL内部瓶颈&#x1f3c6; 优化配置策略大全&#x1f4be; 内存配置优化InnoDB缓…

Unity 3D碰撞器

在Unity中&#xff0c;碰撞器&#xff08;Collider&#xff09;是用于检测物体之间碰撞的组件&#xff0c;它们定义了物体的物理边界。碰撞器与刚体&#xff08;Rigidbody&#xff09;配合使用&#xff0c;实现物理模拟。下面我将按您的要求&#xff0c;从碰撞器的种类、常用参…