Redis(三)

news2024/11/19 0:28:30

文章目录

  • 一、单节点Redis的问题
    • (一)数据丢失
    • (二)并发能力问题
    • (三)存储能力问题
    • (四)故障恢复问题
  • 二、Redis持久化
    • (一)RDB
      • 1、RDB是什么
      • 2、rdb配置
      • 3、手动触发RDB
      • 4、RDB原理
    • (二)AOF
      • 1、AOF是什么
      • 2、开启AOF
      • 3、AOF持久化流程
      • 4、Rewrite压缩
    • (三)RDB vs AOF
  • 三、Redis主从集群读写分离
    • (一)搭建主从架构
    • (二)主从同步原理
      • 全量同步
      • 增量同步
      • 同步优化
      • 总结
  • 四、Redis哨兵
    • (一)、哨兵的作用和原理
      • 1、哨兵的作用
      • 2、哨兵原理
    • (二)、搭建哨兵集群
    • (三)、RedisTemplate哨兵模式
  • 五、分片集群
    • (一)、搭建分片集群
    • (二)、散列插槽
    • (三)、集群伸缩
    • (四)、故障转移
    • (五)、RedisTemplate访问分片集群


一、单节点Redis的问题

(一)数据丢失

解决方案:实现Redis数据持久化

(二)并发能力问题

解决方案:搭建主从集群,实现读写分离

(三)存储能力问题

解决方案:搭建分片集群,利用插槽机制实现动态扩容

(四)故障恢复问题

解决方案:利用哨兵,实现健康检测和自动恢复

二、Redis持久化

(一)RDB

1、RDB是什么

RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为RDB文件,默认是保存在当前运行目录。
redis停机时会执行一次RDB。

2、rdb配置

Redis内部有触发机制,可以在redis.conf文件中找到,格式如下:

#900秒内,如果至少有一个key被修改,则执行bgsave,如果是save “” 则表示禁用RDB
save 900 1
save 300 10
save 60 10000
# save: 设置快照的触发条件,格式为:save <seconds> <changes>
# 其中seconds表示指定时间间隔内的秒数,changes表示指定修改数量内的次数。
# 当满足其中一个条件时,Redis 就会进行快照。


stop-writes-on-bgsave-error yes # 在RDB执行时如果出现错误,是否停止写入。默认是yes。
rdbcompression yes   # 是否压缩 RDB 文件。默认是yes。
rdbchecksum yes  #是否对 RDB 文件进行校验和。默认是yes。
dbfilename dump_6379.rdb  # 设置 RDB 文件名,默认是dump.rdb。
dir /var/lib/redis/6379  # 设置 RDB 存储的路径,默认是Redis启动目录,一般需要指定其他路径
rdb-del-sync-files no

# rdb-del-sync-files是Redis的一个高级配置选项,在默认情况下不开启。
# 当开启后,Redis在执行RDB持久化期间,将首先创建一个新的RDB文件,如果保存成功,则删除上一个RDB文件,并将新RDB文件重命名为原来的RDB文件名。具体来说,当开启rdb-del-sync-files选项时,Redis会在将新的RDB文件重命名为旧的RDB文件的同时将旧的RDB文件删除,这个动作是同步执行的,因此相当于在RDB文件的写入和删除之间插入了一个同步点。
# 开启rdb-del-sync-files,可以将RDB生成和删除的CPU负载分散在时间上,从而减少对Redis操作的影响。但是需要注意的是,由于同时进行写入和删除的操作,所以会消耗更多的磁盘IO,因此在I/O繁忙的系统上,这个选项可能会影响Redis的性能表现。

3、手动触发RDB

在这里插入图片描述

4、RDB原理

在这里插入图片描述
在这里插入图片描述

(二)AOF

1、AOF是什么

以日志的形式来记录每个写操作(增量保存),将Redis执行过的所有写指令记录下来(读操作不记录), 只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis 重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。
在这里插入图片描述

2、开启AOF

在这里插入图片描述
AOF和RDB同时开启,系统默认取AOF的数据(数据不会存在丢失)

3、AOF持久化流程

(1)客户端的请求写命令会被append追加到AOF缓冲区内;

(2)AOF缓冲区根据AOF持久化策略[always,everysec,no]将操作sync同步到磁盘的AOF文件中;

(3)AOF文件大小超过重写策略或手动重写时,会对AOF文件rewrite重写,压缩AOF文件容量;

(4)Redis服务重启时,会重新load加载AOF文件中的写操作达到数据恢复的目的;

4、Rewrite压缩

1 压缩是什么:

AOF采用文件追加方式,文件会越来越大为避免出现此种情况,新增了重写机制, 当AOF文件的大小超过所设定的阈值时,Redis就会启动AOF文件的内容压缩, 只保留可以恢复数据的最小指令集.可以使用命令bgrewriteaof

2 重写原理,如何实现重写

AOF文件持续增长而过大时,会fork出一条新进程来将文件重写(也是先写临时文件最后再rename),redis4.0版本后的重写,是指上就是把rdb 的快照,以二级制的形式附在新的aof头部,作为已有的历史数据,替换掉原来的流水账操作。

重写虽然可以节约大量磁盘空间,减少恢复时间。但是每次重写还是有一定的负担的,因此设定Redis要满足一定条件才会进行重写。

如果Redis的AOF当前大小>= base_size +base_size*100% (默认)且当前大小>=64mb(默认)的情况下,Redis会对AOF进行重写。
在这里插入图片描述

(三)RDB vs AOF

在这里插入图片描述

三、Redis主从集群读写分离

在这里插入图片描述

(一)搭建主从架构

在这里插入图片描述

(二)主从同步原理

全量同步

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

增量同步

在这里插入图片描述

同步优化

在这里插入图片描述

总结

简述全量同步和增量同步区别?
全量同步:master将完整内存数据生成RDB,发送RDB到slave。后续命令则记录在repl baklog,逐个发送给slave。
增量同步:slave提交自己的offset到master,master获取repl_baklog中从offset之后的命令给slave

什么时候执行全量同步?
slave节点第一次连接master节点时slave节点断开时间太久,repl_baklog中的offset已经被覆盖时

什么时候执行增量同步?
slave节点断开又恢复,并且在repl_baklog中能找到offset时

四、Redis哨兵

(一)、哨兵的作用和原理

1、哨兵的作用

在这里插入图片描述

2、哨兵原理

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

(二)、搭建哨兵集群

(三)、RedisTemplate哨兵模式

在这里插入图片描述
在这里插入图片描述

五、分片集群

在这里插入图片描述

(一)、搭建分片集群

(二)、散列插槽

(三)、集群伸缩

(四)、故障转移

(五)、RedisTemplate访问分片集群

在这里插入图片描述

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

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

相关文章

Java基于SpringBoot的高校招生系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 简介系统设计思路1 数据库设计2 系统整体设计 系统详细设计1系统功能模块2. 管理员功能模块3学生…

时序预测 | MATLAB实现ICEEMDAN-IMPA-LSTM时间序列预测

时序预测 | MATLAB实现ICEEMDAN-IMPA-LSTM时间序列预测 目录 时序预测 | MATLAB实现ICEEMDAN-IMPA-LSTM时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 ICEEMDAN-IMPA-LSTM功率/风速预测 基于改进的自适应经验模态分解改进海洋捕食者算法长短期记忆网络时间序…

MQTT协议入门介绍

前言 物联网曾被认为是继计算机、互联网之后&#xff0c;信息技术行业的第三次浪潮。随着基础通讯设施的不断完善&#xff0c;尤其是 5G 的出现&#xff0c;进一步降低了万物互联的门槛和成本。物联网本身也是 AI 和区块链应用很好的落地场景之一&#xff0c;各大云服务商也在…

【漏洞复现】某 NVR 视频存储管理设备远程命令执行

漏洞描述 NUUO NVR是中国台湾NUUO公司旗下的一款网络视频记录器&#xff0c;该设备存在远程命令执行漏洞&#xff0c;攻击者可利用该漏洞执行任意命令&#xff0c;进而获取服务器的权限。 免责声明 技术文章仅供参考&#xff0c;任何个人和组织使用网络应当遵守宪法法律&am…

简单对比一下 C 与 Go 两种语言

使用一个简单的计数程序将古老的 C 语言与现代 Go 进行比较。 Go 是一种现代编程语言&#xff0c;追溯其历史大部分源自编程语言 C。所以&#xff0c;任何熟悉 C 语言的开发者都可能会觉得 Go 很熟悉。C 程序员使用 Go 编写新程序变得容易&#xff0c;同时避免了 C 编程语言的…

安全典型配置(一)使用ACL限制FTP访问权限案例

【微|信|公|众|号&#xff1a;厦门微思网络】 使用ACL限制FTP访问权限案例 ACL简介 访问控制列表ACL&#xff08;Access Control List&#xff09;是由一条或多条规则组成的集合。所谓规则&#xff0c;是指描述报文匹配条件的判断语句&#xff0c;这些条件可以是报文的源地址…

申请免费 SSL 证书为您的小程序加密通信

在今天的网络环境中&#xff0c;数据安全和隐私保护变得尤为重要。无论是网站还是应用程序&#xff0c;为其提供安全的通信渠道都是至关重要的。对于小程序开发者来说&#xff0c;使用 SSL&#xff08;Secure Sockets Layer&#xff09;证书可以有效地保障用户数据的安全&#…

[架构之路-235]:目标系统 - 纵向分层 - 数据库 - 数据库系统基础与概述(快速入门、了解核心概念):概念模型、逻辑模型、物理模型

目录 一、核心概念 1.1 什么是数据与信息 1.2 数据与数据库的关系 1.3 什么是数据库 1.4 数据库中的数据的特点 1.5 数据库与数据结构的关系 1.6 什么是数据库管理系统 1.7 什么是数据库系统 1.8 数据库的主要功能 1.9 Excel表格是数据库吗&#xff1f; 1.10 Excel表…

Asymmetric channel bandwidths(非对称信道带宽)

一人问&#xff1a;“你知道非对称信道带宽&#xff0c;XXX支持吗&#xff1f;”一人答&#xff1a;“我打开XXX的RF应答表看看”。 我默默打开了38.306搜了一下&#xff0c;简单研究了下。 在R15 中&#xff0c;为某些NR band引入了asymmetric Bandwidth UL/DL&#xff0c;以优…

Python机器学习实战-特征重要性分析方法(9):卡方检验(附源码和实现效果)

实现功能 使用chi2()获得每个特征的卡方统计信息。得分越高的特征越有可能独立于目标。 实现代码 from sklearn.feature_selection import chi2 import pandas as pd from sklearn.datasets import load_breast_cancer import matplotlib.pyplot as pltX, y load_breast_ca…

深入浅出的介绍一下虚拟机VMware Workstation——part2(详细安装与使用)

目录 虚拟机概念虚拟机软件安装准备点击创建新的虚拟机&#xff1a;选择要安装的系统镜像文件&#xff08;.iso文件&#xff0c;自己网上找&#xff0c;比如win10的win11的或者mac的系统镜像&#xff09;选择与iso文件对应的系统设置虚拟机名称和位置设置虚拟机基础信息 VMware…

计算机组成与设计的一些概念扫盲

一、术语 超标量架构 早期的单发射架构微处理器的流水线设计目标是做到平均每个时钟周期能执行一条指令&#xff0c;但这一目标不能满足提高处理器性能的要求。为了提高处理器的性能&#xff0c;处理器要具有每个时钟周期发射执行多条指令的能力。超标量体系结构可描述一种微处…

discuz封面设置失败的解决办法(centos系统+windows系统)

discuz封面设置失败的解决办法(centos系统windows系统&#xff09; centos系统&#xff1a;1、开启/var/www/html 这个目录的读写权限chmod -R 777 /var/www/html然后重启httpd&#xff1a;service httpd restart如果discuz论坛发布帖子&#xff0c;还是显示封面设置失败的话…

整理笔记——射频基础知识

一、什么是射频 射频&#xff08;RF&#xff09;&#xff0c;表示可以辐射到空间的电磁频率&#xff0c;频率范围从300kHz&#xff5e;300GHz之间。每秒变化小于1000次的交流电称为低频电流&#xff0c;大于10000次的交流电称为高频电流&#xff0c;射频就是高频交流变化的电磁…

vue,mixins混入

痛点&#xff1a;当我们的项目越来越庞大&#xff0c;项目中的某些组件之间可能会存在一些相似的功能&#xff0c;这就导致了在各个组件中需要编写功能相同的代码段&#xff0c;重复地定义这些相同的属性和方法&#xff0c;导致代码地冗余&#xff0c;还不利于后期代码的维护。…

【芯片设计- RTL 数字逻辑设计入门 5 -- RTL 全加器实现及验证】

文章目录 1.11.1.1 DUT Code1.1.2 Testbench1.1.3 自动化编译:Makefile1.1.4 Debug 方法 1.2 逻辑综合工具 - Design Compile1.2.1 逻辑综合流程1.2.2 逻辑综合方法 1.1 1.1.1 DUT Code 以实现一个全加器为例子, 功能 真值表 验证 功能完整性穷举法代码覆盖率 lab01 编译仿…

哈希应用 : 位图和布隆过滤器

位图 在这里我们可以用一种哈希的新方法 -- 又快又节省内存&#xff08;位图&#xff09; -------------------------------------------------------------------------------------------------------------------------------- 对我们的位进行标记 位图的应用 1.给定100亿…

SVV,PPV算法开发记录

定义 刘大为-血液动力学 Getinge 链接&#xff1a;高级监测参数: SVV, PPV 数据集 计算SVV和PPV使用的动脉血压曲线&#xff0c;在此选用了Kaggle上的Cuff-Less Blood Pressure Estimation数据集&#xff0c;该数据集包含PPG&#xff0c;ABP&#xff0c;ECG三条曲线&…

Godot 脚本外置参数设置

文章目录 添加脚本设置参数bulid 一下 Godot Engine 4.2 简体中文文档 C# exports 添加脚本 设置参数 Godot 添加脚本后&#xff0c;设置参数。两种形式都可以 [Export]public int Speed { get; set; } 10;[Export]public string Name ;bulid 一下 私有变量也可以

【网络安全 ---- 靶场搭建】凡诺企业网站管理系统靶场详细搭建过程(asp网站,练习sql注入)

一&#xff0c;资源下载 百度网盘资源下载链接&#xff1a;百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固&#xff0c;支持教育网加速&#xff0c;支持手机端。注册使用百度网盘即可享受免费存储空间https://pan.baidu.com…