Redis的持久化的策略

news2024/9/23 9:23:45

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.coloradmin.cn/o/2034133.html

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

相关文章

kotlin协程之runBlocking

前言 上一篇: Callback转挂起函数 文章中,介绍了在Kotlin协程中如何把传统的回调风格的异步操作转换为协程风格的挂起函数,这个在开发过程中是非常常用的,主要用于把 callback 风格的代码转换为协程中的挂起函数,以便于我们在协程环境中调用。 但是,有时候我们也会遇到…

Socket进程间通信,从概念到实战(TCP,UDP,linux环境下C语言代码编写)

1、socket简述 Socket是一种通信机制,通过它可以在不同主机之间进行数据交换。在Socket编程中,有两种常见的通信模式:客户端-服务器模式和点对点模式。它基于TCP/IP协议栈,并使用IP地址和端口号来标识通信的目标。 2、Socket 基…

数据结构--树与二叉树

数据结构分类 集合 线性结构(一对一) 树形结构(一对多) 图结构(多对多) 数据结构三要素 1、逻辑结构 2、数据的运算 3、存储结构(物理结构) 树的概念 树的分类 满二叉树和完全二叉树 二叉排序树 平衡二叉树 二叉树分类总结 二叉树的存储结构 …

NVIDIA液冷技术革新:GB200 的挑战与机遇

英伟达 (Nvidia) 最近的一个创新与比特和字节无关。这是一项液冷技术创新。英伟达即将推出的 GB200 服务器机架将主要通过在硬件管道里循环的液体、而不是空气来冷却,该机架包含英伟达下一代 Blackwell 芯片。 英伟达发言人表示,该公司还在与供应商合作…

【人工智能】助力音乐产业

了解人工智能如何通过先进的制作和作曲工具改变音乐产业,创造创新的声音并重塑音乐创作。 人工智能在音乐行业中发挥着重要作用(这是双关语)。它影响着从艺术家创作音乐的方式到营销和发行的一切。鉴于人工智能的巨大力量,这项创新…

探索数据可视化,数据看板在各行业中的应用

数据可视化是一种通过图形化手段将数据呈现出来的技术,它将复杂的数据和信息转化为易于理解的图表、地图、仪表盘等视觉元素,使得数据的模式、趋势和关系更加直观地展现出来。通过数据可视化,用户可以快速识别重要信息、发现潜在问题&#xf…

【网络】IO

IO 一、五种IO模型同步通信 vs 异步通信阻塞 vs 非阻塞 二、其他高级IO非阻塞IOSetNoBlockI/O多路转接之selectselect函数原型fd_set(位图)select代码select缺点poll(用select修改) I/O多路转接之epoll高级版改进select和poll的问…

Spring Boot 3.x Web MVC实战:实现流缓存的request

上一节《Spring Boot 3.x Filter实战:记录请求日志》实践最后遇到了request对象的流不可重复读的问题,本小节我们将通过流数据缓存以及流的装饰器模式来解决这个问题。如果觉得对你有帮助,记得点赞收藏,关注小卷,后续更…

搭建高可用OpenStack(Queen版)集群(十)之部署分布式存储Ceph

一、Ceph知识点学习 Ceph知识点学习:https://www.cnblogs.com/happy-king/p/9207509.html 二、部署分布式存储Ceph 一)设置yum源 在全部控制与计算节点设置epel与ceph yum源 epel源:repo安装包下载_开源镜像站-阿里云 ceph源:cep…

Idea2023.3.3 —— SourceTree与gitee关联

SourceTree SourceTree链接: https://pan.baidu.com/s/1oqPxhpHeNOOiuRRQydes6g?pwdngru 提取码: ngru 点击Generate 分别保存私钥和公钥 gitee官网注册 这是gitee的公钥,与上面SourceTree的公钥私钥不一样 gitee生成公钥,确保本地安装好git git链接: h…

高级组件封装技巧--按钮的封装

我们做一些重要操作的时候,往往需要弹窗一个提示框,告诉用户这是一个需要小心的操作,是否继续,用户点击确定后才会开始执行,这种操作写起来比较繁琐,如下所示,要写一堆代码,今天我来…

2024年恩施建筑企业人员初中级专业技术职务评审

2024年恩施建筑企业人员初中级专业技术职务评审 恩施中级职称申报一般是一年1次,具体视情况而定。申报中级职称人员须相应专业水平能力测试成绩合格且在有效期内,同时应当符合相应专业申报条件。专业能力水平能力测试成绩3年有效。 2024年恩施建筑类初…

2024年8月 | 涉及侵权、抄袭洗稿违规行为公示

为护社区良好氛围,守护清朗网络空间,CSDN持续对侵害他人权益、抄袭洗稿违规内容进行治理。 今年7月,CSDN共计删除涉及抄袭洗稿内容xx篇,下架侵权资源xx个,封禁违规账号42个。 部分违规账号公示 账号昵称处置结果封禁创…

STM32CubeMX学习记录——串口通信(含蓝牙通信)

文章目录 一、学习目的二、CubeMX配置三、代码编写 一、学习目的 串口通信是一种简单且广泛应用的通信方式。本文的学习目标是通过CubeMX工具配置串口通信,并编写相应代码,以实现串口助手打印信息以及蓝牙通信等功能。 二、CubeMX配置 (1&am…

docker容器常用指令,dockerfile

docker:容器,主要是解决环境迁移的问题,将环境放入docker中,打包成镜像。 docker的基本组成:镜像(image),容器(container),仓库(repository)。镜像相当于类,容器相当于类的实例对象…

0基础深度学习项目12:基于TensorFlow实现彩色图片分类

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 目录 一、创建环境二、前期准备2.1 设置GPU2.2 导入数据2.2.1 在TensorFlow框架中导入CIFAR-10数据集2.2.2 数据归一化 2.3数据可视化 三、构建简单的CNN网络&…

kubernetes集群部署oracle 11g数据库服务

背景: 因业务上线需要,研发中心要求在kubernetes测试集群部署一个oracle 11g的数据库,用于业务功能调试。 一、实施部署oracle 11g数据库: 1、拉取oracle 11g的镜像: [rootharbor-02 ~]# docker pull registry.cn-h…

Java之MySQL

1、数据库三大范式 每个字段不可再分,不冗余 非主键字段完全依赖于主键 2、drop 删除整张表,不可回滚;delete删除部分数据行;truncate保留表 删除所有数据 3、innodb存储引擎 支持行级锁、表级锁 支持事务 支持异常奔溃后的安…

拓普壹的选品师项目怎么操作更好?

在拓普壹的选品师项目中,成功的关键在于精细化的操作和系统化的策略。这不仅要求选品师具备深厚的自身能力,还需要明智的选择平台和有效利用新技术。本文将从这三个方面探讨如何更好地操作拓普壹选品师项目。 1. 自身能力培养 选品师的核心任务是从众多商…

SPRING07_自动装配如何加强、@Autowired注解debug分析、总结

文章目录 ①. Spring启动一行代码:②. ApplicationContex增强功能③. 自动装配如何装配进来④. Autowired自动注入细节xml版⑤. Autowired注解版分析⑥. 总结一下 ①. Spring启动一行代码: ①. 创建一个IOC容器,传入容器的xml配置文件,Spring在整个创建容器的过程中全部都准备…