【Redis】Redis的持久化

news2024/9/22 9:58:11

目录

传统数据库事务的ACID

Redis的持久化方案

持久化配置

①纯内存运行

②RDB模式

优缺点

临时文件

触发RDB规则的情况

如何恢复数据

③AOF模式

日志文件

优缺点


传统数据库事务的ACID

 

Redis的持久化方案

        ①在一定时间内,命令执行次数达到一定上限时,会生成一个文件,文件会不断覆盖,生成文件的IO操作少,但是可能会丢失数据。

        ②记录“写命令”

每行命令都记录

每秒记录一次命令

不记录(默认)

        Redis是操作完之后才进行AOF日志记录(只记录操作的指令记录)

持久化配置

        Redis是否具备持久化,取决于其持久化配置。

①纯内存运行

        不具备持久化,服务器一旦停机会导致数据丢失。

RDB模式

        取决于RDB策略,满足策略的情况执行持久化。

  • 在指定的时间间隔对数据进行快照存储,恢复时会将快照文件直接读取到内存中。
  • Redis会单独创建一个(fork)子线程进行持久化操作,将数据写入到一个临时文件中,等待持久化操作结束后,将这个临时文件替换上次的临时文件,这个过程不执行IO操作,能够保证极高的性能。
  • 如果需要进行大批量的数据恢复,而且对数据恢复的完整性不非常敏感的话,RDB模式会比AOF模式更加高效。

优缺点

优点适合大规模数据、对数据要求不高的场景
缺点需要一定时间间隔进行操作
如果Redis意外宕机后,最后一次持久化后的数据可能会丢失
fork线程会占用一定的时间与空间,因为它会产生临时文件

临时文件

        RDB模式会产生临时文件的名字为:dump.rdb(在Redis启动目录下)

        在redis.conf配置文件有规定RDB执行的规则:

默认:

#   In the example below the behaviour will be to save:

#   after 900 sec (15 min) if at least 1 key changed

#   after 300 sec (5 min) if at least 10 keys changed

#   after 60 sec if at least 10000 keys changed

触发RDB规则的情况

        ①满足sava规则的情况。

        ②执行flushall(清除所有库中的所有key)。

        ③退出Redis时。

如何恢复数据

        将rdb文件放入Redis启动目录,Redis启动时会检查是否存在rdb文件,存在则恢复数据。

AOF模式

        程序会在执行命令/指令时将指令保存在硬盘上。【aop(追加)】

  • 记录每次对服务器的写操作,当服务器重启时会重新执行这些命令恢复原有数据,将全部记录在恢复时执行一遍。
  • 以日志的形式记录写入(set)操作,读(get)操作不记录,此日志文件尽可查看,如手动修改将损坏文件,即使使用redis-chek-aop.exe --fix修复工具进行修复也会缺失数据。

日志文件

        日志的保存文件名是appendonly.aof

#appendonly yes   开启aof模式

#appendfsync always  每次都修改,消耗性能

#appendfsync everysec  每秒修改一次,可能会丢失1秒的数据

# appendfsync no  不开启aof模式

优缺点

        优点:每次更新时同步,文件的完成性更好

        缺点:相较与edb文件,恢复速度慢,效率不高

 

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

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

相关文章

【SQL】索引失效的11种情况

【SQL】索引失效的11种情况索引失效案例【1】. 全值匹配【2】. 最佳左前缀法则【3】. 主键插入顺序【4】. 计算、函数、类型转换(自动或手动)导致索引失效【5】. 类型转换导致索引失效【6】. 范围条件右边的列索引失效【7】. 不等于(! 或者<>)索引失效【8】. is null可以…

如何在openstack环境下实现高性能的网络服务

大家晚上好。那我们开始吧。主要还是抛装引玉&#xff0c;互相学习交流。今天和大家分享下面一些内容&#xff1a; 1.关于openstack中VNF网络性能的一些思考和思路 2.相关的开源项目 3.OVS 2.4 DPDK with IVSHMEM/vHost-user(w/DPDK) 和vHost (w/oDPDK)性能测试数据 4.后续可以…

3.55 OrCAD中怎么批量修改属性值字体的大小?OrCAD的Occurrence属性与Instance属性是什么含义?

笔者电子信息专业硕士毕业&#xff0c;获得过多次电子设计大赛、大学生智能车、数学建模国奖&#xff0c;现就职于南京某半导体芯片公司&#xff0c;从事硬件研发&#xff0c;电路设计研究。对于学电子的小伙伴&#xff0c;深知入门的不易&#xff0c;特开次博客交流分享经验&a…

[附源码]java毕业设计疫情防控下高校教职工健康信息管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

TypeScript(五)知识扩展

TypeScript TypeScript模块化 JavaScript 有一个很长的处理模块化代码的历史&#xff0c;TypeScript 从 2012 年开始跟进&#xff0c;现在已经实现支持了很多格式。但是随着 时间流逝&#xff0c;社区和 JavaScript 规范已经使用为名为 ES Module的格式&#xff0c;这也就是我…

【Mysql】表的增删查改

文章目录前言一.表中插入数据1.1 全列增加1.2 指定列增加1.3 一次性插入多行数据1.4. 插入查询结果二.表的更新和替换2.1. 表的插入更新2.2. 替换三.表的查询3.1. 全列查询3.2. 指定列查询3.3. 查询字段为表达式并取别名3.4. 结果去重3.4. where条件3.5. 结果排序3.6. 分页查询…

【正点原子FPGA连载】第九章 按键控制LED实验摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第九章 按键控制…

骨传导耳机是怎么传声的?骨传导耳机到底有哪些好处?

骨传导耳机最近在网上也是越来越火了&#xff0c;作为一种可以开放双耳的耳机&#xff0c;对比一般的耳机&#xff0c;它可以做到开放双耳&#xff0c;不堵耳道&#xff0c;保持耳朵健康卫生。 但是随着这种耳机的逐渐崛起&#xff0c;很多人也对这种耳机产生了疑惑&#xff1…

正版软件|WonderFox Photo Watermark 图片水印批量处理软件

Photo Watermark 可以为您做什么&#xff1f;水印是最有效的方法&#xff0c;可防止他人擅自使用您的照片。只需单击几下&#xff0c;Watermark Software 将为您的图像文件提供不可磨灭的保护。 可自定义的水印 文本水印 只需按键即可创建支持丰富字体&#xff0c;符号&#x…

Redis进阶(主从复制、Redis集群、缓存穿透、缓存击穿、缓存雪崩)

目录 1、主从复制&#xff08;读写分离&#xff09; 1.1、什么是主从复制 1.2、主从复制的作用 1.3、环境搭建 1.4、一主二仆 1.5、注意事项 1.6、反客为主 1.7、哨兵模式&#xff08;sentinel&#xff09; 2、Redis集群 2.1、什么是集群 2.2、什么是redis集群 2.3…

报表工具使用之FineReport大数据集导出插件

1. 概述 1.1 版本 报表服务器版本 插件版本 功能变更 11.0 V1.0.0 - 11.0.10 V1.1.16 1&#xff09;插件名称变更为&#xff1a;大数据集导出插件 2&#xff09;支持导出为 CSV 类型文件 1.2 应用场景 大批量数据导出的时候&#xff0c;会对服务器、网络传输、数据库…

Python eval()函数详解

一、eval()函数 用来执行一个字符串表达式&#xff0c;并返回表达式的值。可以把字符串转化为list,dict ,tuple。 二、eval()函数源码 三、eval()函数语法 eval(*args, **kwargs) 说明&#xff1a; expression -- 表达式。globals -- 变量作用域&#xff0c;全局命名空间&…

设计模式之美——单元测试和代码可测性

最可落地执行、最有效的保证重构不出错的手段应该就是单元测试&#xff08;Unit Testing&#xff09;。 什么是单元测试&#xff1f; 单元测试由研发工程师自己来编写&#xff0c;用来测试自己写的代码的正确性。我们常常将它跟集成测试放到一块来对比。单元测试相对于集成测…

【PyTorch】Torchvision Models

文章目录六、Torchvision Models1、VGG1.1 add1.2 modify2、Save and Load2.1 模型结构 模型参数2.2 模型参数&#xff08;官方推荐&#xff09;2.3 Trap六、Torchvision Models 1、VGG VGG参考文档&#xff1a;https://pytorch.org/vision/stable/models/vgg.html 以VGG16为…

apache-atlas-hbase-hook源码分析

元数据类型 Hbase元数据类型, 包括命令空间、表、列族、列 public enum HBaseDataTypes {// ClassesHBASE_NAMESPACE,HBASE_TABLE,HBASE_COLUMN_FAMILY,HBASE_COLUMN;public String getName() {return name().toLowerCase();} }Hbase元数据采集实现 1&#xff09;批量采集HBa…

【windows】实战部署二(使用)SVNserver服务端+SVNclient客户端

SVN服务器应用 创建版本库 1、打开VisualSVN Server&#xff1a; 2、建立版本库&#xff1a; 需要右键单击左边窗口的Repositores,在弹出的右键菜单中选择Create New Repository或者新建-Repository 3、默认选择&#xff0c;点击 “下一步” 按钮&#xff1a; Regular FSFS…

物联网安全年报漏洞情况

物联网 威胁分析漏洞篇物联网威胁分析—漏洞篇 引言 本章将从漏洞利用角度对物联网威胁进行分析。首先&#xff0c;我们分析了 NVD和 Exploit-DB中的物联网 年度漏洞及利用 1 变化趋势&#xff1b;之后统计了绿盟威胁捕获系统捕获到的物联网漏洞利用的整体情况&#xff1b;最…

Matlab深度学习实战一:LeNe-5图像分类篇MNIST数据集分十类且matlab提供模型框架全网为唯一详细操作流程

1.数据集简介下载与准备 2.matlab搭建模型相关知识 3.matlab软件的操作过程&#xff1a; &#xff08;1&#xff09;界面操作 &#xff08;2&#xff09;深度学习设计器使用 &#xff08;3&#xff09;图像数据导入 &#xff08;4&#xff09;训练可视化 一、数据集简介下载与…

mysql基本命令操作

MySQL数据库管理 SQL语句 SQL语句用于维护管理数据库&#xff0c;包括数据查询、数据更新、访问控制、对象管理等功能 DDL&#xff1a;数据定义语言&#xff0c;用于创建数据库对象&#xff0c;如库、表、索引等 DML&#xff1a;数据操纵语言&#xff0c;用于对表中的数据进行…

[附源码]计算机毕业设计JAVA民宿网站管理系统

[附源码]计算机毕业设计JAVA民宿网站管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybati…