2.redis-持久化

news2024/9/25 7:20:59

01-Redis持久化

  • 概述

    • hbs4w6huj5hw4uhu
    • Redis数据存储在缓存中,为了防止数据的意外丢失,确保数据安全性。所以,就有了redis持久化。
  • 分类

    • r6t7jy8kiwbh4r5t6

    • RDB: Redis默认的持久化策略, 直接存储数据

    • AOF: 存储数据的操作过程.

02-RDB持久化之save指令

  • 配置说明

    # 设置rdb文件名
    dbfilename "dump.rdb"
    # 设置rdb文件存储路径
    dir /usr/local/redis/data
    # 设置存储rdb时是否压缩数据
    rdbcompression no
    # 设置读写文件过程是否进行RDB格式校验
    rdbchecksum no
    
  • 开发步骤

    • ①修改redis.conf
      • 添加RDB配置
    • ②重启redis服务器
    • ③执行save指令
  • ①修改redis.conf

    port 6379
    daemonize no
    # logfile "log-6379.log"
    maxclients 50
    timeout 0
    loglevel debug
    
    # RDB设置
    # 1.设置rdb文件名
    dbfilename "dump-6379.rdb"
    
    # 2.设置rdb文件存储路径
    dir /usr/local/redis/data
    
    # 3.设置存储rdb时是否压缩数据
    rdbcompression no
    
    # 4.设置读写文件过程是否进行RDB格式校验
    rdbchecksum no
    
  • ②重启redis服务器

  • ③执行save指令

    • ag5ygwh43y4huw

    • ag3u4hw6uy43hsbahb

03-save指令执行流程

  • 执行流程

    • h4ebj53y47hbaw4hw
  • 存在的问题

    • redis是单线程任务执行序列,如果在某个执行节点有大量的数据需要进行save操作,那么后续的任务 就会阻塞。

04-RDB持久化之bgsave指令

  • 配置说明

    # 后台存储过程中如果出现错误现象,是否停止保存操作
    stop-writes-on-bgsave-error yes
    
  • 开发步骤

    • ①修改redis.conf
      • 添加bgsave配置
    • ②重启redis服务器
    • ③执行bgsave指令
  • ①修改redis.conf

    port 6379
    daemonize no
    # logfile "log-6379.log"
    maxclients 50
    timeout 0
    loglevel debug
    
    # RDB设置
    # 1.设置rdb文件名
    dbfilename "dump-6379.rdb"
    
    # 2.设置rdb文件存储路径
    dir /usr/local/redis/data
    
    # 3.设置存储rdb时是否压缩数据
    rdbcompression no
    
    # 4.设置读写文件过程是否进行RDB格式校验
    rdbchecksum no
    
    # 5.后台存储过程中如果出现错误现象,是否停止保存操作
    stop-writes-on-bgsave-error yes
    
  • ②重启redis服务器

  • ③执行bgsave指令

    • j64knreq2w4hb6j35nw
    • shr5buji573e3yuqwha5a4u

05-bgsave指令执行流程

  • 执行流程

    • gh3qaew5uj4wh356y1q3
  • 存在的问题

    • 不管是save指令还是bgsave指令都需要开发人员手动执行.

06-RDB持久化之save配置文件

  • 概述

    • 开发过程中,最好是一定时间范围内,或者数据量达到一定水平,就可以自动执行bgsave指令,那么 就可以使用到save配置
  • 配置说明

    #每隔second秒执行检测,如果有count个key发生改变,就自动RDB持久化
    save seconds count
    
  • 开发步骤

    • ①修改redis.conf
      • 添加自动bgsave配置
    • ②重启redis服务器
    • ③指令演示
  • ①修改redis.conf

    port 6379
    daemonize no
    # logfile "log-6379.log"
    maxclients 50
    timeout 0
    loglevel debug
    
    # RDB设置
    # 1.设置rdb文件名
    dbfilename "dump-6379.rdb"
    
    # 2.设置rdb文件存储路径
    dir /usr/local/redis/data
    
    # 3.设置存储rdb时是否压缩数据
    rdbcompression no
    
    # 4.设置读写文件过程是否进行RDB格式校验
    rdbchecksum no
    
    # 5.后台存储过程中如果出现错误现象,是否停止保存操作
    stop-writes-on-bgsave-error yes
    
    # 6.每隔10秒检测一次,有2个数据变化就执行bgsave指令
    save 10 2
    
  • ②重启redis服务器

  • ③指令演示

    • h4weu364whja3gqwhrdvy5
    • gajw345e3q2y5g6t34

07-RDB三种方案对比

  • 三种方案对比
    • garhujw46eq3t62y45
  • 优点
    • RDB内部存储的是redis在某个时间点的数据快照,非常适合用于数据备份,全量复制等场景
    • RDB恢复数据的速度要比AOF快很多
  • 缺点
    • 每次全量备份, 数据量大, 中间如果出现问题, 导致持久化失败;
    • 每次读写都是全部数据,当数据量巨大时,效率非常低;
    • 需要开启子进程, 耗费服务性能
  • 解决方案
    • ①备份数据的操作过程的指令;
    • ②使用部分复制.

08-AOF概述

  • 概述
    • AOF(append only file),以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中命令 达 到恢复数据的目的
    • 与RDB相比可以简单理解为由记录数据改为记录数据产生的变化
    • AOF的主要作用是解决了数据持久化的实时性,目前已经是Redis持久化的主流方式
    • 与RDB同时使用,优先使用AOF进行持久化
  • 策略
    • always: 每次写操作都执行aof持久化
    • everysec: 默认值, 每隔一秒执行aof持久化
    • no: 不做aof持久化

09-AOF配置及使用

  • 配置说明

    # 开启aof持久化功能
    appendonly yes
    # 设置aof文件名
    appendfilename 'appendonly-6379.aof'
    # 设置aof文件存储路径
    dir /usr/local/redis/data
    # 设置aof策略
    appendfsync everysec
    
  • 开发步骤

    • ①修改redis.conf
    • ②重启redis服务器
    • ③代码演示
  • ①修改redis.conf

    port 6379
    daemonize no
    # logfile "log-6379.log"
    maxclients 50
    timeout 0
    loglevel debug
    
    # RDB设置
    # 1.设置rdb文件名
    dbfilename "dump-6379.rdb"
    
    # 2.设置rdb文件存储路径
    dir /usr/local/redis/data
    
    # 3.设置存储rdb时是否压缩数据
    rdbcompression no
    
    # 4.设置读写文件过程是否进行RDB格式校验
    rdbchecksum no
    
    # 5.后台存储过程中如果出现错误现象,是否停止保存操作
    stop-writes-on-bgsave-error yes
    
    # 6.每隔10秒检测一次,有2个数据变化就执行bgsave指令
    save 10 2
    
    # AOF设置
    # 1.开启aof持久化功能
    appendonly yes
    # 2.设置aof文件名
    appendfilename 'appendonly-6379.aof'
    # 4.设置aof策略
    appendfsync everysec
    
  • ②重启redis服务器

  • ③代码演示

    • h4weu364whja3gqwhrdvy5

    • g3yqaew4yuw35h

10-AOF执行流程

  • ①always
    • agbheu4hwq236y574r
  • ②everysec
    • ga3huwa34jnseag

11-AOF重写概述

  • 概述

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4ke1bL3D-1681709019240)(null)]

    • 只记录结果的指令.

  • 好处

    • 降低磁盘占用量,提高磁盘利用率
    • 提高持久化效率,降低持久化写时间,提高IO性能
    • 降低数据恢复用时,提高数据恢复效率

12-AOF手动重写

  • 概述
    • 由开发人员手动输入bgrewriteaof触发AOF重写
  • 代码实现
    • ga3uwh4t2qe46y73
  • 效果如下
    • farhu4wik78uq34r
  • 存在的问题
    • 需要开发人员手动输入指令完成AOF重写.

13-AOF自动重写

  • 参数说明

    # aof文件大小阈值,默认是1MB
    auto-aof-rewrite-min-size size
    
    # 比之前的aof文件大小增加了percent百分比,默认是100%
    auto-aof-rewrite-percentage percent
    
    # aof文件现在的大小
    aof_current_size
    
    # aof文件之前的大小
    aof_base_size
    
  • 触发条件

    # aof当前文件大小 大于 文件阈值
    aof_current_size > auto-aof-rewrite-min-size
    
    # aof文件大小增量 大于 百分比
    aof_current_size-aof_base_size / aof_base_size ≥ auto-aof-rewrite-percentage
    

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

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

相关文章

[pgrx开发postgresql数据库扩展]2.安装与开发环境的搭建

——前文再续,书接上一回。 前言 我上篇文章刚刚写完,pgx就全面改名为了 pgrx……,结果导致我都来不及把以前的文章改过来,所以以后遵循最新的命名方法。 pgrx的开发环境需求 pgrx目前仅支持在linux操作系统上进行开发&#xff…

Android 基于 Perfetto 抓取 trace

Perfetto 官方链接地址 https://github.com/google/perfetto/ 开启Android的trace跟踪服务 Perfetto 是基于 Android 的系统追踪服务, 这个配置在 Android11 之后是默认打开的,但是如果你是 Android 9 ( P ) 或者 10 ( Q ) ,那么就需要手动设…

【备考2023年软考】选系统规划与管理师,还是信息系统项目管理师?

目录 一、系统规划与管理师介绍 二、信息系统项目管理师介绍 三、二者区别 四、适合什么人考 五、怎么备考 1.了解考试大纲 2.系统学习(附带资料分享) 3.多做题 4.总结复习 软考系统规划与管理师和信息系统项目管理师是软考中的两个比较热门的证…

CSS——js 动态改变原生 radio、switch 的选中样式

导航 1. radio1-1. 业务场景:1-2. 效果:1-3. 问题点:1-4. 解决方案:1-5. 代码:1-5-1. HTML1-5-2. JS1-5-3. html 内容排版的 css1-5-4. 实现 radio 效果的 css 2. switch2-1. 业务场景:2-2. 效果&#xff1…

Vue3+Typescript+Vitest单元测试环境+组件事件测试篇

上一节我们学会了组件测试的基础测试部分组件测试基础篇,这一节,我们学习一下深入测试组件的事件 在component中增加一个新的组件,名字就叫做Zmbutton2吧 import { defineComponent } from "vue";const ZmButton2 defineComponent({name: &…

《Spring MVC》 第一章 MVC模式

前言 MVC 模式,全称为 Model-View-Controller(模型-视图-控制器)模式。是一种软件架构模式。 分层描述Model(模型)它是应用程序的主体部分,主要由以下 2 部分组成: 实体类 Bean:专…

(4.7-4.13)【大数据新闻速递】上海、广州、青海、贵阳大力发展大数据产业;2026年中国大数据市场规模预计达365亿美元

01【贵阳大数据交易所发布全国首个交易激励计划】 4月6日,贵阳大数据交易所发布了“交易激励计划”,旨在提高数据场内交易的吸引力,解决交易入场难的问题。该计划是落实《关于构建数据基础制度更好发挥数据要素作用的意见》和《关于支持贵州…

阿里云服务器网络收发包PPS性能25万/80万/100万PPS详解

阿里云服务器ECS网络收发包PPS是什么?云服务器PPS多少合适?网络收发包PPS是指云服务器每秒可以处理的网络数据包数量,单位是PPS即packets per second每秒发包数量。阿里云百科来详细说下阿里云服务器网络收发包PPS性能参数表,以及…

Vue 事件处理器

文章目录 Vue 事件处理器事件修饰符按键修饰符 Vue 事件处理器 事件监听可以使用 v-on 指令&#xff1a; v-on <div id"app"><button v-on:click"counter 1">增加 1</button><p>这个按钮被点击了 {{ counter }} 次。</p>…

入门神经网络——浅层神经网络

文章目录 一、基础知识1.浅层神经网络介绍2.浅层神经网络的正向传播3.反向传播 二、浅层神经网络代码实例 一、基础知识 1.浅层神经网络介绍 此次构件浅层神经网络&#xff0c;相比于单神经元&#xff0c;浅层神经网络拥有多个神经元&#xff0c;因此又可以称为多神经元网络&…

【Python杂事】 处理Excel中日期时间之间没有空格问题

目录 一、数据源要求二、逻辑思路1、ROI区域2、对ROI区域进行判定 三、代码实现四、成果展示总结 碰到一个非常有趣的问题&#xff1a; 在我们的日常工作中&#xff0c;常常需要处理各种各样的数据&#xff0c;其中不乏包含日期和时间信息的数据。有时候我们会发现这些数据中日…

事件抽取的概念

1. 事件的定义 事件是指发生在某个特定的时间点或时间段、某个特定的地域范围内&#xff0c;由一个或者多个角色参与的一个或者多个动作组成的事情或状态的改变。 2. 事件基本元素 时间、地点、人物、原因、结果 3.事件抽取的定义 主要研究如何从描述事件信息的文本中抽取…

python共词矩阵分析结果一步到位

import os import re import pandas as pd from PyPDF2 import PdfFileReader import string import yakeif __name__ __main__:# 运行第一部分代码pdf_files_path C:/Users/win10/Documents/美国智库/pdf_files# 定义一个函数&#xff0c;用于读取PDF文件并将其转化成文本de…

C++学习之交互式表达式求值的详细讲解和简单代码示例

一、怎么理解交互式表达式求值&#xff1a; 交互式求表达式值是指通过命令行交互的方式&#xff0c;接收用户输入的数值和运算符号&#xff0c;然后计算出其表达式的值并返回给用户。这种方式可以方便地进行简单的计算和查错&#xff0c;也可以用于程序设计中一系列复杂的计算…

单CDN与融合CDN之间的对比:优缺点及注意事项

CDN是现代互联网服务的重要组成部分&#xff0c;它CDN可帮助内容提供者高速交付内容&#xff0c;不同的服务器部署在全球不同的数据中心&#xff0c;并在它们之间共享相同的网络路径。随着企业意识到CDN的重要性&#xff0c;越来越多的企业正在使用CDN作为内容分发工具。互联网…

完美解决丨RuntimeError: create_session() called before __init__().

错误&#xff1a; import sys sys.path.append(/home/pi/ssd-detect) import ssd_detect ssd_detect.detect(/home/pi/ssd-detect/test.jpg) 报错如下&#xff1a; Traceback (most recent call last): File "test.py", line 6, in <module ssd_detect.detect(/ho…

ArcGIS制作建设项目使用林地现状图

近年来&#xff0c;随着经济社会的快速发展&#xff0c;各地建设项目不断增多&#xff0c;占用征用林地项目的数量也呈逐年上升的趋势。根据《占用征用林地审核审批管理规范》规定&#xff0c;建设项目申请占用征用林地&#xff0c;应编制的项目使用林地可行性报告&#xff1b;…

Linux-升级CMake版本(Ubuntu18.4)

一、简介 在一些场景中&#xff0c;因为CMake版本过低而无法编译&#xff0c;此时就需要升级CMake的版本。 二、升级 卸载 先卸载旧的cmake sudo apt-get autoremove cmake 安装 切换文件夹 cd /usr/src 下载cmake包。需要哪个版本&#xff0c;可以自行修改版本号。 注&#…

中国人工智能公司CIMCAI集装箱识别云服务全球用户量领先核心科技领先,免费人工智能集装箱识别云服务,智能化港航中国人工智能公司

中国人工智能公司CIMCAI集装箱识别云服务全球用户量领先核心科技领先&#xff0c;免费人工智能集装箱识别云服务&#xff0c;智能化港航智慧港航.全球领先CIMCAI ENGINE集装箱AI检测云服务&#xff0c;集装箱号识别率99.98%&#xff0c;全球超4000企业用户使用&#xff0c;集装…

npm 包本地调试(详细流程:包本地路径、npm link 、yalc)

一、使用 包本地路径安装 package.json 中的包名叫 dzmtest&#xff08;这个才是重点&#xff09;&#xff0c;包的文件夹名 test。 获取到包的文件夹路径 执行安装命令&#xff0c;然后提示安装成功 $ npm install 包文件夹路径# 例如&#xff1a; $ npm install /Users/d…