当前位置: 首页 > news >正文

redis的高可用之持久化

1、redis的高可用考虑指标

(1)正常服务

(2)数据容量的扩展

(3)数据的安全性

2、redis实现高可用的四种方式

(1)持久化

(2)主从复制

(3)哨兵模式

(3)cluster集群

3、持久化的两种方式【重点】

(1)RDB持久化:redis在内存中的数据定时保存到磁盘中

自动机制

1)配置文件vim /etc/redis/6379.conf

①一定时间内redis数据发生变化,bgsave更新

save 120 1000(生产中常用)

save 60 10000(生产中常用)

数据变动越多,执行的时间越短;数据变动不多,执行的时间越长

②rdb文件的压缩功能

③持久化文件的位置

2)主从复制:若从节点执行的是全量复制操作,主节点会执行bgsave,将.rdb文件传送给从节点

3)关闭主进程shutdown后,会自动执行.rdb的持久化

手动机制

①save(工作中禁用)

②bgsave(redis主从复制的默认机制)

(2)AOF持久化:redis的操作日志以追加的方式写入AOF的文件

①自动机制

②重写功能

1)手动触发redis-cli bgrewriteaof

2)自动触发vim /etc/redis/6379.conf

【重点】.aof文件出现截断的情况下,该怎么做?(经验)

aof-load-truncated yes  #判断.aof文件被截断时的行为

设置成yes,表示发现.aof文件被截断,redis在修复时尽可能的恢复.aof文件中的数据,且redis会继续运行

4、AOF备份和恢复【重点】

停止redis服务/etc/init.d/redis_6379 stop

在appendonly.aof文件中删除不需要的操作,即可恢复数据

重启redis服务/etc/init.d/redis_6379 restart

注:RDB是redis的默认持久化,但一旦开启AOF持久化,那么reids会以AOF的持久化文件作为最高优先级

5、AOF的重写功能【重点】

随着时间增长,AOF文件中的数据也会随之增加,AOF文件也随之变大,过大的AOF文件不仅会影响服务器的正常运行,也会导致数据恢复时间过长

文件重写是指定期的重写AOF文件,减小AOF文件的体积,AOF重写是将redis进程的数据,转化为写命令,同步到新的AOF文件中(不会额外生成一个新的AOF文件,只是在原内容中进行压缩),不会对原有的AOF文件进行任何读写操作

注:文件重写虽是AOF持久化推荐的,但不是必须的【重点】

没有重写,不影响redis启动时读取数据,在实际工作中,会关闭文件重写功能,通过定时任务完成具体重不重写,根据业务需求来看

AOF重写为什么能压缩文件?

①重写过程中,过期的数据不会写入文件

②重写过程中,无效的命令不再写入文件,数据被重复设置,例如set test 1,set test 2,删除的数据也不会写入set test 1 ,del test

③重写过程中,会将多条命令合并成一个。例如sadd test1 1 ,sadd test1 2 ,sadd test1 3 ,压缩成sadd test1 1 2 3。重写之后AOF文件中的命令减少了,占用空间减少了,恢复速度增加了

6、RDB和AOF的优缺点

(1)RDB持久化

优点:RDB文件体积小,备份数据时网络传输速度块,适合全量复制,恢复速度比AOF快

缺点:①无法实时持久化,数据非常重要,无法容忍丢失,所以AOF成为主流

②RDB需要满足特定的格式,兼容性差,新旧版本不兼容(reids版本必须一致,redis版本5.0.7)

2AOF持久化

优点:秒级持久化,兼容性好(.aof是文本格式保存的命令,命令是通用的)

缺点:.aof文件大,恢复速度慢,AOF持久化需频繁的向磁盘写入数据,磁盘的I/O压力大,对redis主进程的性能有一定影响

相关文章:

redis的高可用之持久化

1、redis的高可用考虑指标 (1)正常服务 (2)数据容量的扩展 (3)数据的安全性 2、redis实现高可用的四种方式 (1)持久化 (2)主从复制 (3&…...

onnx模型转换opset版本和固定动态输入尺寸

背景:之前我想把onnx模型从opset12变成opset12,太慌乱就没找着,最近找到了官网上有示例的,大爱onnx官网,分享给有需求没找着的小伙伴们。 1. onnx模型转换opset版本 官网示例: import onnx from onnx im…...

远程运维如何更高效的远程管理?向日葵的这几项功能会帮到你

远程运维如何更高效的远程管理?向日葵的这几项功能会帮到你 具备一定规模的企业,其IT运维需求普遍会面临设备数量众多、难以统一高效管理、始终存在安全敞口等问题,尤其是针对分部广泛的无人值守设备时,更是如此。 举一个简单的例…...

python BDD 的相关概念

在Python 语言中进行BDD的规格和测试文件的编写的时候,常常会遇到下面的概念: Fixture : 测试设施。设定测试环境的预设状态或值的机制。Background: 背景。所有场景的公共部分。Scenario: 场景。Given : 前置条件Whe…...

【Exception】Error: Dynamic require of “path“ is not supported

Talk is cheap, show me the code. 环境 | Environment kversionOSwindows 11Node.jsv18.14.2npm9.5.0vite5.0.0vue3.3.8 报错日志 | Error log >npm run dev> app10.0.0 dev > viteERROR failed to load config from C:\code\frontend\app1\vite.config.js …...

【蓝桥杯选拔赛真题25】C++两个数比大小 第十三届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析

目录 C/C++两个数比大小 一、题目要求 1、编程实现 2、输入输出 二、算法分析...

C++学习——C++运算符重载(含义、格式、示例、遵循的规则)

以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 一、运算符重载的含义 所谓重载,就是赋予新的含义。函数重载(Function Overloading)可以让一个函数名有多种功能,在不同情况下进行不同…...

【unity实战】unity3D中的PRG库存系统和换装系统(附项目源码)

文章目录 先来看看最终效果前言素材简单绘制库存UI前往mixamo获取人物模型动画获取一些自己喜欢的装备物品模型库存系统换装系统装备偏移问题添加消耗品最终效果源码完结 先来看看最终效果 前言 之前2d的换装和库存系统我们都做过不少了,这次就来学习一个3d版本的&…...

编程语言发展史:C语言的诞生及其影响

预计更新 第一部分:早期编程语言 1.1布尔代数和机器语言 1.2汇编语言的出现和发展 1.3高级语言的兴起 第二部分:主流编程语言 1.1 C语言的诞生及其影响 1.2 C语言的发展和应用 1.3 Java语言的出现和发展 1.4 Python语言的兴起和特点 1.5 JavaScript语言…...

(二)pytest自动化测试框架之添加测试用例步骤(@allure.step())

前言 在编写自动化测试用例的时候经常会遇到需要编写流程性测试用例的场景,一般流程性的测试用例的测试步骤比较多,我们在测试用例中添加详细的步骤会提高测试用例的可阅读性。 allure提供的装饰器allure.step()是allure测试报告框架非常有用的功能&am…...

【用unity实现100个游戏之16】Unity程序化生成随机2D地牢游戏2(附项目源码)

文章目录 先看看最终效果前言生成走廊生成房间修复死胡同增加走廊宽度获取走廊位置信息集合方法一方法二 源码完结 先看看最终效果 前言 上期已经实现了房间的生成,本期紧跟着上期内容,生成走廊并结合上期内容生成连通的房间。 生成走廊 修改Procedur…...

潮玩宇宙大逃杀游戏开发源码说明

潮玩宇宙大逃杀游戏是一款简单而刺激的游戏。玩家在倒计时结束前从8个房间中选择一个房间并投入宝石。倒计时结束后,系统会自动生成一个敌人,然后随机挑选一个房间并清除这个房间内的人。其余7个房间内的玩家就可以按照投入比例获得被清除掉玩家的宝石。…...

UE5 操作WebSocket

插件:https://www.unrealengine.com/marketplace/zh-CN/product/websocket-client 参考:http://dascad.net/html/websocket/bp_index.html 1. 安装Plugings 2.测试websocket服务器 http://www.websocket-test.com/ 3.连接服务器 如果在Level BP里使用&a…...

Linux文件

目录 一、基本概念 二、研究进程和被打开文件的关系 (一)w方式 (二)a方式 三、认识系统接口,操作文件 (一)认识文件描述符 (二)举例 (三)…...

素短语的定义

素短语,是指至少含有一个终结符的短语,并且除自身外,不包含更小的素短语。 最左素短语是句型中最左边的素短语。...

【华为OD题库-033】经典屏保-java

题目 DVD机在视频输出时,为了保护电视显像管,在待机状态会显示"屏保动画”,如下图所示,DVD Logo在屏幕内来回运动,碰到边缘会反弹:请根据如下要求,实现屏保Logo坐标的计算算法 1、屏幕是一个800 * 600像素的矩形&…...

clang+llvm多进程gdb调试

clangllvm多进程gdb调试 前言1. 命令行gdb2. 父进程调试3. 子进程调试4. 返回父进程 前言 在学习新增llvm的优化pass时,需要跟踪clang及llvm的调用栈。然而llvm通过posix_spawn()创建了新进程,这使得gdb调试必须有一定的技巧了。 1. 命令行gdb 以下命…...

PHP反序列化简单使用

注:比较简陋,仅供参考。 编写PHP代码,实现反序列化的时候魔法函数自动调用计算器 PHP反序列化 serialize(); 将对象序列化成字符串 unserialize(); 将字符串反序列化回对象 创建类 class Stu{ public $name; public $age; public $sex; publi…...

专业课140+总分420+东南大学920专业综合考研,信息学院通信专业考研分享

专业课140总分420东南大学920专业综合考研,信息学院通信专业考研分享 我是三月开始系统考研备战,寒假先看的高数全书,奈何在家效率极其低下,才草草看了前三四章。回校后学习的比较认真,每天大概保持10个小时左右&…...

数据结构与算法编程题11

已知两个链表A和B分别表示两个集合&#xff0c;其元素递增排列。 请设计算法求出A与B的交集&#xff0c;并存放于A链表中。 a: 1, 2, 2, 4, 5, 7, 8, 9, 10 b: 1, 2, 3, 6, 7, 8 #include <iostream> using namespace std;typedef int Elemtype; #define ERROR 0; #defin…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...

通过MicroSip配置自己的freeswitch服务器进行调试记录

之前用docker安装的freeswitch的&#xff0c;启动是正常的&#xff0c; 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...