基于内存的分布式NoSQL数据库Redis(六)AOF设计

news2024/11/20 20:31:34

文章目录

    • 知识点21:Redis持久化:AOF设计
    • 知识点22:Redis持久化:AOF实现
    • 附录一:Jedis Maven依赖

知识点21:Redis持久化:AOF设计

  • 目标:掌握Redis的AOF持久化机制

  • 路径

    • step1:问题
    • step2:AOF方案
    • step3:优缺点
    • step4:持久化方案
  • 实施

    • 问题

      RDB存在一定概率的数据丢失,如何解决?
      
    • AOF方案

      • 思想

        • 按照一定的规则,将内存数据的操作日志追加写入一个文件中
        • 当Redis发生故障,重启,从文件中进行读取所有的操作日志,恢复内存中的数据
        • 重新对Redis进行执行,用于恢复内存中的数据
      • 过程

        image-20210521164135479

      • 实现:追加的规则

        • appendfsync always
          • 每更新一条数据就同步将这个更新操作追加到文件中
          • 优点:数据会相对安全,几乎不会出现数据丢失的情况
          • 缺点:频繁的进行数据的追加,增大磁盘的IO,导致性能较差
        • appendfsync everysec
          • 每秒将一秒内Redis内存中数据的操作异步追加写入文件
          • 优点:在安全性和性能之间做了权衡,性能要比always高
          • 缺点:有数据丢失风险 ,但最多丢失1秒
        • appendfsync no
          • 交给操作系统来做,不由Redis控制
          • 肯定不用的
    • 优缺点

      • 优点:安全性和性能做了折中方案,提供了灵活的机制,如果性能要求不高,安全性可以达到最高

      • 缺点

        • 这个文件是普通文本文件,相比于二进制文件来说,每次追加和加载比较慢

        • 数据的变化以追加的方式写入AOF文件

          • 问题:文件会不断变大,文件中会包含不必要的操作【过期的数据】
          • 解决:模拟类似于RDB做全量的方式,定期生成一次全量的AOF文件
    • 应用:数据持久化安全方案,理论上绝对性保证数据的安全

    • 持久化方案:两种方案怎么选?

      • 两种方案都可以用:默认不配置AOF,使用的RDB
      • 问题**:两种都用,**重启Redis加载的是谁的数据?
        • 加载AOF
  • 小结

    • 什么是AOF机制?

      • 按照一定的规则将内存中的变化追加记录在一个日志文件中
      • 规则
      • always:内存变化一条,就追加磁盘一条,安全性高,性能差
        • everysesc:每一秒将这一秒内存的变化追加到磁盘中,安全和性能做了折中
        • no:不用
      • 优点
      • 安全和性能的选择更加灵活,安全性更高
      • 缺点
      • 追加到普通日志文件:相比于二进制来追加和恢复都要慢一些
        • 日志文件越来越大,里面会包含很多无用数据操作:根据规则来构建全量的AOF
      • 应用:Redis作为数据库或者缓存

知识点22:Redis持久化:AOF实现

  • 目标:实现AOF持久化

  • 实施

    • 开启并配置

      vim redis.conf
      #594行:开启aof
      appendonly yes
      #624行:默认每s刷写一次
      appendfsync everysec
      #665,666
      #增幅100%就重新覆盖一次
      auto-aof-rewrite-percentage 100
      #文件至少要大于64MB,一般建议更改为GB大小
      auto-aof-rewrite-min-size 64mb
      
    • 重启Redis

      shutdown
      redis-start.sh
      
  • 查看数据

      keys *
    

    image-20210522103318073

    • 从AOF文件恢复数据
  • 查看aof文件

      ll /export/server/redis/datas
    

    image-20210522103432092

  • 小结

    • 实现AOF持久化

附录一:Jedis Maven依赖

    <properties>
        <jedis.version>3.2.0</jedis.version>
    </properties>

    <dependencies>
        <!-- Jedis 依赖 -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>${jedis.version}</version>
        </dependency>
        <!-- JUnit 4 依赖 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

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

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

相关文章

FPGA 图像缩放 1G/2.5G Ethernet PCS/PMA or SGMII实现 UDP 网络视频传输,提供工程和QT上位机源码加技术支持

目录 1、前言版本更新说明免责声明 2、相关方案推荐UDP视频传输--无缩放FPGA图像缩放方案我这里已有的以太网方案 3、设计思路框架视频源选择ADV7611 解码芯片配置及采集动态彩条跨时钟FIFO图像缩放模块详解设计框图代码框图2种插值算法的整合与选择 UDP协议栈UDP视频数据组包U…

从0到1,申请cos服务器并上传图片到cos文件服务器

目录 准备工作 Java代码编写 控制台打印 整理成工具类 编写接口 Postman测试 准备工作 1.进入网址腾讯云 产业智变云启未来 - 腾讯 (tencent.com) 2.搜索cos,点击立即使用&#xff0c;刚开始会免费赠送你 3.存储都是基于桶的&#xff0c;先创建桶&#xff0c;在桶里面创…

【C++】多态 -- 详解

⚪前言 声明一下&#xff0c;下面的代码和解释都是在 VS2019 下的 X86 程序中进行的&#xff0c;涉及的指针都是 4 bytes。如果要其他平台下&#xff0c;部分代码需要改动。比如&#xff1a;如果是 X64 程序&#xff0c;则需要考虑指针是 8 bytes 问题等等。其它编译环境下&…

TCP/IP(十八)TCP 实战抓包分析(二)TCP 三次握手和四次挥手

一 TCP三次握手和四次挥手 说明&#xff1a; 本文三次握手和四次挥手 无异常情况下的分析目标&#xff1a; 通过抓取和分析 HTTP 协议网络包,理解 TCP 三次握手和四次挥手的工作原理 ① 抓包和测试准备 1、 服务端事先执行 tcpdump 抓包 --> 172.25.2.100tcpdump -i b…

VMware 虚拟机里连不上网的解决方案

解决办法一&#xff1a; 虚拟机设置里&#xff0c;找到“网络适配器”,右边的网络连接选择“NAT 模式”&#xff0c;如果不行的话再 linux系统。还是不行的话接着看第二种解决方案。 解决方法二&#xff1a; 可能原因是VMware NET Service服务没开 win R&#xff0c;输入&a…

CSS 笔记/练习

CSS 概述 与 html 配合&#xff0c;实现内容与样式分离样式美化 标签中元素作用 class&#xff1a;class属性用于为元素指定一个或多个样式类。通过为元素添加class属性&#xff0c;可以将其与CSS样式表中的样式规则关联起来&#xff0c;从而改变元素的外观和行为。一个元素可…

Confluence 解决PDF导出乱码问题

1.原因 PDF导出乱码是因为由于服务器缺少必要字体 2.解决办法 下载字体文件将字体文件重命名为simhei.ttf Confluence→管理→PDF导出语言支持&#xff0c;导入字体即可

sqlalchemy更新json 字段的部分字段

需求描述&#xff1a; 我们有个json字段&#xff0c;存储的数据形如下&#xff0c;现在需要修改love {"dob":"21","subject":{"love":"programming"}}工程结构 main.py from sqlalchemy import Column, String, Integer,c…

微信公众号如何变更为订阅号?

公众号迁移有什么作用&#xff1f;只能变更主体吗&#xff1f;大家都知道&#xff0c;微信公众号是不支持直接变更主体的&#xff1b;但是很多情况下&#xff0c;我们又不得不进行账号主体的更换&#xff1b;这时候&#xff0c;我么就可以通过账号迁移功能&#xff0c;将A公众号…

图像抓取代码示例

以下是一个使用luasocket-http库的Lua下载器程序&#xff0c;用于下载图像。此程序使用了https://www.duoip.cn/get_proxy的代码。 -- 引入luasocket和luasocket-http库 local socket require("socket") local http require("http") ​ -- 获取代理服务…

Java入门GUI第一章

Java入门GUI第一章 一.简介 GUI的核心技术&#xff1a;Swing AWT 现在GUI逐渐被淘汰&#xff0c;因为&#xff1a; 界面不美观需要jre环境 为什么我们要学习&#xff1f; 可以写出自己想要的小工具工作时候可能会遇到维护Swing界面&#xff0c;概率特别小&#xff01;了…

「蓝桥·算法双周赛」第一场公开赛【待补题填坑】

三带一【算法赛】 - 蓝桥云课 (lanqiao.cn) 给定四个字符&#xff0c;判断是否其中有三个相同&#xff0c;另一个与他们不同 #include <bits/stdc.h> void solve() {std::string s;std::cin>>s;char as[0],bs[1],cs[2],ds[3];if(ab&&ac&&a!d) std:…

AdaInf: Data Drift Adaptive Scheduling 阅读笔记

论文原文链接 文章目录 摘要一、背景、动机和主要贡献背景动机主要问题研究挑战 主要贡献 二、实验分析数据漂移对准确性的影响推理的早期退出结构最优请求批处理大小GPU内存通信 三、AdaInf系统设计概览数据漂移感知再训练-推理DAG生成决定数据漂移影响生成再训练推理DAG 数据…

【LeetCode75】第七十三题 用最少数量的箭引爆气球

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 本题和上一题基本一样&#xff0c;上一题是要我们尽量让区间不重叠&#xff0c;而本题是要我们尽量让区间重叠。 所以我们的做法和上一题…

3D Web轻量化工具HOOPS Web Platform助力Rapid DCS快速上市碳估算产品!

总部位于英国的Rapid DCS提供全面的交钥匙解决方案和服务&#xff0c;帮助建筑环境领域的客户充分利用数字化的优势。 Rapid DCS技术总监James Hunter表示&#xff1a;“如今的建筑项目需要一套与20甚至10年前的建筑项目不同的功能。” “例如&#xff0c;虽然成本规划一直很重…

每日汇评:随着上升趋势的恢复,黄金在1950美元上方等待破位

周三早间&#xff0c;黄金价格逼近1950美元&#xff0c;买家纷纷出手&#xff1b; 尽管市场情绪谨慎&#xff0c;但美元与美债交投疲弱&#xff0c;中国的乐观情绪逐渐消退&#xff1b; 金价重拾200日移动均线&#xff0c;但料持续升穿1950美元&#xff1b; 金价正从每盎司1943…

E056-web安全应用-File Inclusion文件包含漏洞进阶

课程名称&#xff1a; E056-web安全应用-File Inclusion文件包含漏洞进阶 课程分类&#xff1a; web安全应用 --------------------------------------------------------------------------------------------------------------------------------- 实验等级: 中级 任…

Python批量替换文件中内容,效率加倍

文章目录 我遇到的问题解决代码我遇到的问题 由于我的SQL文件太大了,手动去替换估计累死…所以需要一个批量替换。其它类似问题,同理处理。 解决代码 # 定义要替换的内容 replacements = {utf8mb4_0900_ai_ci: utf8_general_ci,utf8mb4: utf8 }# 读取文件内容 with open<…

积分球荧光光谱测试光电检测方式有哪些优点?

积分球荧光光谱测试是一种测量光通量的方法&#xff0c;其基本原理是将待测光源放入积分球中&#xff0c;在积分球内壁涂以白色漫反射层&#xff0c;光源发出的光经球壁多次反射后&#xff0c;使整个球壁上的照度均匀分布&#xff0c;再通过球壁上的孔投射到光电探测器上的光通…

Databend hash join spill 设计与实现 | Data Infra 第 16 期

本周六&#xff0c;我们将迎来最新一期的 Data Infra 直播活动&#xff0c;本次活动我们邀请到了 Databend 研发工程师-王旭东&#xff0c;与大家分享主题为《 Databend hash join spill 设计与实现 》的相关知识。 通过本次分享&#xff0c;我们能更加了解 Databend 的 hash …