Redis的持久化的策略

Redis的持久化的策略

官方文档说明

  • AOF持久化策略
  • RDB持久化的策略

AOF持久化策略

AOF持久性记录服务器接收到的每个写操作,然后,可以在服务器启动时再次重播这些操作,重建原始数据集,使用与Redis协议本身相同的格式记录命令。

appendonly yes #默认是不开启的,我们需要手动配置成no来进行开启# The name of the append only file (default: "appendonly.aof")
appendfilename "appendonly.aof"

AOF 的执行流程

AOF策略的特点

  • 同时使用这两种持久化方式,redis 默认优先加载 aof 文件(aof 数据最完整);

  • AOF 文件会在操作过程中变得越来越大

    • 比如,如果你做一百次加法计算,最后你只会在数据库里面得到最终的数值,但是在你的 AOF 里面会存在 100 次记录,其中 99 条记录对最终的结果是无用的;

    • Redis 支持在不影响服务的前提下在后台子进程(主进程可以继续处理命令请求,避免阻塞主进程

      )重构 AOF文件,让文件得以整理变小;

    • 后台重写的触发条件

      //执行 AOF 重写时,当前 AOF 大小(aof_current_size)和上一次重写时 AOF 大小(aof_base_size)的比值
      auto-aof-rewrite-percentage 100 //AOF文件大于64M
      auto-aof-rewrite-min-size 64mb  //或者用户手动通过调用 bgrewriteaof手动触发
      

AOF 文件存储格式

  • redis-cli 下执行写命令
127.0.0.1:13>set name "kevin"
"OK"
127.0.0.1:13>del name
  • 对应aop文件中记录的内容,就是对应的写操作命令,采用的RESP协议:Redis 的序列化协议。
*2
$6
SELECT
$2
13
*3
$3
set
$4
name
$5
kevin
*2
$3
DEL
$4
name

RDB持久化的策略

RDB 持久化(也称作快照持久化)是指将内存中的数据生成快照保存到磁盘里面,默认文件名dump.rdb

# The filename where to dump the DB
dbfilename dump.rdb

Redis 还可以通过配置文件的选项来实现每隔一段时间自动执行一次 bgsave 命令,虽然选项名称时save,实际上执行的是bgsave命令。自动执行策略可以配置多个,只要满足上面任意一个条件就会执行bgsave。


save 900 1     #900 秒之内,对数据库进行了至少 1 次修改;
save 300 10    #300 秒之内,对数据库进行了至少 10 次修改
save 60 10000  #60 秒之内,对数据库进行了至少 10000 次修改

RDB执行流程

执行了 save 命令,就会在主线程生成 RDB 文件,由于和执行操作命令在同一个线程,所以会阻塞主线程。

bgsave 是fork一个子线程进行处理,所以不会阻塞主线程。

RDB特点

  • 由于存储的是数据快照文件,恢复数据很方便,也比较快
  • 会丢失最后一次快照以后更改的数据

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

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

相关文章

英语词汇量测试系统、英语学习系统

摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&…

Wireshark_DNS_v7.0

Wireshark_DNS_v7.0 一、 nslookup 前置 nslookup 是一个网络命令行工具,用于查询域名系统(DNS)中的域名解析记录。通过使用 nslookup,你可以获取某个域名的IP地址,或者获取与某个IP地址关联的域名信息。 查看域名…

Kafka + Kraft 集群搭建教程,附详细配置及自动化安装脚本

本文主要介绍 kafka kraft 搭建过程,主要用途是为了日志采集,所以搭建相对比较简单暴力,不过也可以作为一个参考供大家学习,主打一个能用管跑(调优啊,参数解释啊,原理啊,太枯燥了&a…

Java高级面试题(二)-- JVM

Jvm虚拟机,运行在操作系统之上,编译执行java代码 1, 面试官:手绘一个类加载过程 补充: 这里的执行硬件 java 调用 c 指令 创建线程 ,new thread()->start() 底层代码就是 native start0()&…

SuccBI+低代码文档中心 — 分析报表

报表设计器界面介绍 报表设计器是用来设计报表的可视化工具,使用类Excel的、基于单元格的、所见即所得的方式设计报表,报表设计器界面如下图: 报表设计器主要包括如下功能板块: 数据源:数据源区域列出了可以用于报表…

haproxy高级功能配置

介绍HAProxy高级配置及实用案例 一.基于cookie会话保持 cookie value:为当前server指定cookie值,实现基于cookie的会话黏性,相对于基于 source 地址hash 调度算法对客户端的粒度更精准,但同时也加大了haproxy负载,目前此模式使用…

OpenGL ES->工作机制

渲染流程 渲染目的:输入3D立体坐标,输出绘制后的2D平面像素工作流程:顶点着色器->图元装配->几何着色器->光栅化->片段着色器->测试与混合,整个工作流程被封装在GPU内部,无法改变。运行在CPU的代码调用…

acpi 主板布局需要 efi

今天在折腾 ESXI 的时候,启动虚拟机跳出了 acpi 主板布局需要 efi 然后我就将 ESXI 的启动方式改为了 EFI 但是虚拟机有莫名的启动不了,网上也没有找到办法,最后,我将虚拟机类型有原本的 ubuntu 换成了 debian 最后启动成功&…

【弱监督时间动作定位】ACGNet: Action Complement Graph Network for WSTAL 论文阅读

ACGNet: Action Complement Graph Network for Weakly-supervised Temporal Action Localization 论文阅读 AbstractIntroductionRelated WorkAction Complement Graph NetworkMethod OverviewAction Complement GraphGraph InferenceTraining Objective ExperimentsConclusion…

nvm node yarn 的安装教程

一、完全卸载旧的nodejs 1、控制面板卸载 nodejs 2、删除node的安装目录 3、删除C盘中遗留的文件 4、将有关node的环境变量删除 5、查看卸载是否成功 npm -v node -v二、安装并配置NVM 1、下载NVM 地址:https://github.com/coreybutler/nvm-windows/release…

移除元素OJ详解

一、题目介绍 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作&am…

资料分析公式

年均增长量 年均增长率

SpringIOC和SpringAOC

lombok插件 XML<!-- 加载资源文件 --><context:property-placeholder location"classpath:jdbc.properties"></context:property-placeholder><!-- 注入数据源 --><bean id"dataSource" class"com.mchange.v2.c3p0.ComboP…

HPA 与pod调度

HPA 自动更新工作负载资源&#xff08;例如 Deployment 或者 StatefulSet&#xff09;&#xff0c; 目的是自动扩缩工作负载以满足需求。 绑定到deploy上&#xff0c;控制pod 依托于metrics-server HorizontalPodAutoscaler 水平pod自动扩缩&#xff1a;意味着对增加的负…

C语言实现单链表

一、什么是单链表 1.链表就是一种在物理存储上各个节点非连续的&#xff0c;随机的&#xff0c;元素的逻辑顺序是通过链表中的指针链接的次序而实现的。 图示&#xff1a; 二、单链表中节点的定义 #include<stdio.h> #include<stdlib.h> #include<string.h>…

机械学习—零基础学习日志(数学基础汇总2)

零基础为了学人工智能&#xff0c;正在艰苦的学习 我比较推荐&#xff0c;《三个月从零入门深度学习&#xff0c;保姆级学习路线图》的整体学习思路&#xff0c;但因为数学基础太差&#xff0c;而且针对所需的数学系统知识&#xff0c;我依然没有很明确的学习方向。 所以直接使…

高性能日志系统 日志格式化输出逻辑

概述 日志消息是由许多要素组成&#xff0c;而日志格式化的主要作用&#xff0c;即是对日志消息进行格式化&#xff0c;组织成自己指定好的字符串结构 总体架构 日志消息&#xff08;LogMsg&#xff09; 用于存储各种日志信息&#xff0c;例如存储日志的级别、时间、行号等信息…

Summernote 富文本编辑器的内容变成只读模式

我 | 在这里 ⭐ 全栈开发攻城狮、全网10W粉丝、2022博客之星后端领域Top1、专家博主。 &#x1f393;擅长 指导毕设 | 论文指导 | 系统开发 | 毕业答辩 | 系统讲解等。已指导60位同学顺利毕业 ✈️个人公众号&#xff1a;热爱技术的小郑。回复 Java全套视频教程 或 前端全套视频…

【安卓】动态加载布局技巧

文章目录 使用限定符常见限定符 使用最小宽度限定符 使用限定符 修改FragmentTest项目中的activity_main.xml文件 <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:orientation"horizontal"android:layout_width&quo…

JavaScript constructor原型原型继承

constructor 在 JavaScript 中&#xff0c;构造函数是一种特殊的函数&#xff0c;使用 new 关键字来调用&#xff0c;用于创建对象实例。JavaScript 中的构造函数通常通过 function 关键字定义。 例如&#xff1a; function Person(name, age) {this.name name;this.age a…