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

redis cluster集群

华子目录

  • 什么是`redis集群`
  • `redis cluster`的`体系架构`
  • 什么是数据`sharding`?
  • 什么是`hash tag`
  • 集群中删除或新增节点,数据如何迁移?
  • `redis集群`如何使用`gossip`通信?
    • 定义
    • `meet信息`
    • `ping消息`
    • `pong消息`
    • `fail消息(不是用gossip协议实现的)`
    • 流量图
  • 数据访问如何定位到具体的节点?
    • 正常访问
    • 访问已被迁移到其他节点的数据
  • `redis cluster主从架构`
  • 创建`redis cluster`的`前提`

什么是redis集群

  • redis3.0开始就支持集群节点之间使用gossip协议进行通信,实现了去中心化集群中支持动态的添加和删除节点动态迁移数据以及自动执行故障转移
  • 哨兵sentinel机制中,可以解决redis高可用问题,即当master故障后可以自动slave提升为master,从而可以保证redis服务正常使用,但是无法解决redis单机写入瓶颈问题,即单机redis写入性能受限于单机的内存大小、并发数量、网卡速率等因素
  • 集群某个节点是否失效,是由整个集群超过半数节点监测都失效,才能算真正的失效
  • 客户端不需要proxy即可直接连接redis应用程序中需要配置全部的redis服务器IP
  • 每个哈希槽可以存储若干个key
  • 无中心redis集群当中,其每个节点保存当前节点数据整个集群状态每个节点都和其他所有节点连接

redis cluster体系架构

在这里插入图片描述

什么是数据sharding

  • redis cluster使用数据分片实现key存储分布
  • redis cluster集群划分为16384个槽位数据库中所有的key进行hash计算后,都会落到这16384个槽位中的其中一个槽位
  • 那么key是如何定位到哪个槽位的。可以通过公式进行计算:CRC16(key)%16384得到就是槽位16384个槽位全部分配cluster中的节点
  • 每个节点维护自己的槽位,同时每个节点也会存储其他节点维护的槽位信息
  • 当然你也可以指定到哪个槽位,这就涉及到了hash tag

什么是hash tag

  • hash tag是用来解决用户想要将一堆数据key全部放到一个槽位提出来的用户可以将key设置成这样:原始的key + {tag标签},当redis cluster碰到这样的key,就会提取{}里面的,进行槽位计算

集群中删除或新增节点,数据如何迁移?

  • 假设cluster目前有四个节点A,B,C,D
  • 如果删除D节点,则会将D节点中的所有槽位全部分配给A,B,C节点
  • 如果新增E节点,则会将A,B,C,D中的部分槽位移动到E节点

redis集群如何使用gossip通信?

定义

  • gossip使得元数据分布式存储不做集中存放,实现了去中心化,当一个节点信息变更,就会触发集群中整个节点信息的更新缺点就是更新会有延迟

meet信息

  • 用于在集群中通知新节点加入

ping消息

  • 用于检测节点是否在线交换每个节点之间状态信息

pong消息

  • pong消息是用来回应其他节点自己发的消息,还可以通过发此消息,让其他节点更新此节点状态信息

fail消息(不是用gossip协议实现的)

  • 集群里的主节点A主节点B标记为下线时,会通过集群广播一条关于主节点Bfail消息,所有接受到这条消息节点(包括主从节点)都会将主节点B标记为下线

流量图

在这里插入图片描述

数据访问如何定位到具体的节点?

正常访问

在这里插入图片描述

访问已被迁移到其他节点的数据

在这里插入图片描述

redis cluster主从架构

  • Redis cluster架构虽然解决了并发的问题,但是又引入了一个新的问题,每个Redis master高可用如何解决
  • 那就是对每个master节点都实现主从复制,从而实现redis高可用性

在这里插入图片描述

创建redis cluster前提

  • 每个redis node节点采用相同的硬件配置相同的密码相同的redis版本
  • 每个节点必须开启参数
cluster-enabled yes  #必须开启集群状态,开启后redis进程会有cluster显示
cluster-config-file nodes-6380.conf   #此文件有redis cluster集群自动创建和维护,不需要任何手动操作
  • 所有redis服务器必须没有任何数据
  • 先启动单机redis且没有任何key value

相关文章:

redis cluster集群

华子目录 什么是redis集群redis cluster的体系架构什么是数据sharding?什么是hash tag集群中删除或新增节点,数据如何迁移?redis集群如何使用gossip通信?定义meet信息ping消息pong消息fail消息(不是用gossip协议实现的&#xff0…...

解锁高效密码:适当休息,让学习状态满格

一、“肝帝” 的困境 在当今竞争激烈的职场中,“肝帝” 现象屡见不鲜。超长工时仿佛成为了许多行业的 “标配”,从互联网企业的 “996”“007”,到传统制造业的轮班倒、无休无止的加班,员工们的工作时间被不断拉长。清晨&#xff…...

代码随想录算法训练营第十一天-150.逆波兰表达式求值

队列栈 #include <iostream> #include <vector> #include <stack>class Solution { public:int evalRPN(std::vector<std::string>& tokens) {std::stack<long long> stack_number;for (auto it tokens.begin(); it ! tokens.end(); it) {…...

C++ 泛编程 —— 嵌套使用模板类

嵌套使用模板类 嵌套使用模板类最常见的场景数组容器中有栈容器栈容器中有数组容器递归使用模板类 嵌套使用模板类最常见的场景 容器中有容器 数组的元素可以是栈&#xff0c;栈中的元素可以是数组。先来看一下Stack和Vector的基本代码&#xff0c;定长数组Array的代码也给出来…...

【WebGIS】Cesium:GLTF数据加载

在3D Web GIS开发中&#xff0c;使用GLTF格式的模型可以提高应用的加载速度并提升用户体验。Cesium.js是一个强大的3D地理空间引擎&#xff0c;支持GLTF格式的3D模型&#xff0c;并且提供丰富的API来处理和优化模型的加载和渲染。本文将系统地介绍如何加载GLTF模型&#xff0c;…...

【面经】25届 双非本科 字节跳动 北京 四年的总结

点击“硬核王同学”&#xff0c;选择“关注” 福利干货第一时间送达 大家好&#xff0c;我是硬核王同学&#xff0c;最近在做免费的嵌入式知识分享&#xff0c;帮助对嵌入式感兴趣的同学学习嵌入式、做项目、找工作&#xff01; 给大家分享一个25届本科大佬的面经&#xff0c…...

抖去推碰一碰系统技术源码/open SDK转发技术开发

抖去推碰一碰系统技术源码/open SDK转发技术开发 碰一碰智能系统#碰碰卡系统#碰一碰系统#碰一碰系统技术源头开发 碰碰卡智能营销系统开发是一种集成了人工智能和NFC技术的工具&#xff0c;碰碰卡智能营销系统通过整合数据分析、客户关系管理、自动化营销活动、多渠道整合和个…...

goview——vue3+vite——数据大屏配置系统

低代码数据大屏配置系统&#xff1a; 数据来源是可以动态api配置的&#xff1a; 配置上面的api接口后&#xff0c;在数据过滤中进行数据格式的转化。 以上内容&#xff0c;来源于https://gitee.com/dromara/go-view/tree/master-fetch/ 后端代码如下&#xff0c;需要更改…...

中间件xxl-job安装

拉取镜像 docker pull xuxueli/xxl-job-admin:2.4.2 创建xxl-job-admin容器 docker create --name xxl-job-admin -p 9099:8080 -e PARAMS"--spring.datasource.urljdbc:mysql://192.168.96.57:3306/xxl_job2Unicodetrue&characterEncodingUTF-8 --spring.dataso…...

【第2篇】 Python与数据库基础

1. 数据库的基本概念 1.1 表&#xff08;Table&#xff09; 表是数据库中存储数据的基本单位&#xff0c;由行和列组成。例如&#xff1a;users 表可以存储用户信息&#xff0c;每一行代表一个用户&#xff0c;每一列代表用户的属性&#xff08;如姓名、年龄&#xff09;。 …...

CTFHUB-web进阶-php

我们用蚁剑中的这个插件来做这些关卡 一.LD_PRELOAD 发现这里有一句话木马&#xff0c;并且把ant给了我们&#xff0c;我们直接连接蚁剑 右键 选择模式&#xff0c;都可以试一下&#xff0c;这里第一个就可以 点击开始 我们进入到目录&#xff0c;刷新一下&#xff0c;会有一个…...

深度学习使用Anaconda打开Jupyter Notebook编码

新手入门深度学习使用Anaconda打开Jupyter Notebook编码 1. 安装Anaconda 第一种是Anaconda官网下载安装包&#xff0c;但是很慢&#xff0c;不太建议 第二种使用国内清华大学镜像源下载 选择适合自己电脑的版本&#xff0c;支持windows&#xff0c;linux系统 下载完之后自行…...

金蝶V10中间件的使用

目录 环境准备搭建过程配置修改应用部署 环境准备 Linux内核服务器JDK1.8安装包&#xff1a;AAS-V10.zip程序包&#xff1a;***.war 搭建过程 将安装包上传至服务器opt目录下&#xff0c;官方给定的默认服务主目录为“/opt/AAS-V10/ApusicAS/aas/”&#xff1b;解压安装包(解…...

Firewalld 防火墙详解:深入理解与实践指南

在现代网络环境中&#xff0c;防火墙是保护系统和网络不受未授权访问的关键工具。firewalld是Linux系统中广泛使用的动态防火墙管理工具&#xff0c;它提供了强大的功能和灵活的配置选项。本文将深入探讨firewalld防火墙的工作原理、配置和管理&#xff0c;以及如何在实际环境中…...

linux系统编程(五)

1、信号 信号是事件发生时对进程的通知机制&#xff0c;针对每个信号都定义了一个唯一的整数&#xff0c;这些整数定义在signal.h中。 常见信号如下&#xff1a; SIGABRT&#xff1a;进程调用abort函数&#xff0c;系统向进程发送此信号&#xff0c;终止进程并产生核心转储文…...

Effective C++ 条款 16:成对使用 `new` 和 `delete` 时要采取相同形式

文章目录 条款 16&#xff1a;成对使用 new 和 delete 时要采取相同形式核心思想示例代码错误用法分析设计建议总结 条款 16&#xff1a;成对使用 new 和 delete 时要采取相同形式 核心思想 一致性要求 当使用 new 分配内存时&#xff0c;必须在相应的 delete 操作中保持一致&a…...

【HarmonyOS NEXT】鸿蒙原生应用“上述”

鸿蒙原生应用“上述”已上架华为应用市场&#xff0c;欢迎升级了鸿蒙NEXT系统的用户下载体验&#xff0c;用原生更流畅。 个人CSDN鸿蒙专栏欢迎订阅&#xff1a;https://blog.csdn.net/weixin_44640245/category_12536933.html?fromshareblogcolumn&sharetypeblogcolumn&a…...

【人工智能】使用Python构建推荐系统:从协同过滤到深度学习

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 推荐系统是现代互联网的重要组成部分,广泛应用于电商、社交媒体和流媒体平台中。本文详细介绍了如何使用Python构建推荐系统,从传统的协同…...

店铺营业状态设置

admineShopController RestController("admineShopController") RequestMapping("/admin/shop") Api(tags "店铺相关接口") Slf4j public class ShopController {//设置一个常量 因为经常使用public static final String KEY "SHOP-ST…...

batchnorm和layernorm的理解

batchnorm和layernorm原理和区别 batchnorm 原理 对于一个特征tensor x ∈ R b c f 1 f 2 … x \in \mathbb{R}^{b \times c \times f_1 \times f_2 \times \dots} x∈Rbcf1​f2​… 其中&#xff0c; c c c是通道&#xff0c; f f f是通道中各种特征&#xff0c;batchno…...

Pixel Couplet Gen多场景落地:企业春节活动、校园AI展、微信小程序贺卡

Pixel Couplet Gen多场景落地&#xff1a;企业春节活动、校园AI展、微信小程序贺卡 1. 项目背景与核心价值 Pixel Couplet Gen是一款基于ModelScope大模型驱动的创新型春联生成工具。它将传统春节文化与现代像素艺术完美融合&#xff0c;为用户带来全新的数字文化体验。 核心…...

lychee-rerank-mm环境部署:NVIDIA驱动470+、CUDA 12.x兼容性验证清单

lychee-rerank-mm环境部署&#xff1a;NVIDIA驱动470、CUDA 12.x兼容性验证清单 1. 项目概述与核心价值 lychee-rerank-mm是一个专为RTX 4090显卡优化的多模态重排序系统&#xff0c;基于Qwen2.5-VL架构和Lychee-rerank-mm模型构建。这个系统能够对批量图片与文本描述进行智能…...

《数字孪生为什么90%都是假的》——没有空间数据的“孪生”,只是一个会动的PPT

一、摘要&#xff08;Executive Summary&#xff09;近年来&#xff0c;“数字孪生&#xff08;Digital Twin&#xff09;”成为智慧城市、工业互联网与数字基础设施建设中的核心关键词。然而&#xff0c;在大量实际项目中&#xff0c;所谓“数字孪生系统”仅停留在三维建模与数…...

golang如何实现QPS实时统计_golang QPS实时统计实现方案

用 time.Tick 原子计数器实现秒级QPS统计&#xff1a;每秒tick重置计数器&#xff0c;请求入口仅atomic.Add&#xff0c;轻量无锁&#xff1b;暴露QPS应独立路由避免伪共享&#xff1b;rate.Limiter不适用于观测&#xff0c;高精度需分桶滑动窗口。用 time.Tick 原子计数器做…...

CLIP ViT-H-14效果展示:艺术风格迁移前后图像在特征空间的距离变化

CLIP ViT-H-14效果展示&#xff1a;艺术风格迁移前后图像在特征空间的距离变化 你有没有想过&#xff0c;当一幅梵高的《星空》被AI“理解”成毕加索的立体派风格时&#xff0c;在AI的“大脑”里&#xff0c;这两幅画到底有多“像”&#xff1f; 今天&#xff0c;我们就来用C…...

Nginx-UI 备份恢复漏洞 PoC 公开:攻击者可篡改加密备份并注入恶意配置

漏洞概述Nginx-UI 备份恢复机制中被披露存在一个高危安全漏洞&#xff08;CVE-2026-33026&#xff09;。该漏洞允许威胁攻击者在恢复过程中篡改加密备份文件并注入恶意配置。随着公开的 PoC 利用代码发布&#xff0c;未打补丁的系统面临被完全攻陷的即时风险。加密缺陷利用原理…...

Windows热键冲突检测:3分钟找出占用程序的智能工具

Windows热键冲突检测&#xff1a;3分钟找出占用程序的智能工具 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 当你的CtrlC…...

OpenCore Legacy Patcher深度指南:老旧Intel Mac的系统升级解决方案

OpenCore Legacy Patcher深度指南&#xff1a;老旧Intel Mac的系统升级解决方案 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher是一…...

RoboStudio6.08学习记录(2)

工业机器人工作站的构建1.在文件功能选项卡中&#xff0c;选择“创建”&#xff0c;单击“创建”或“空工作站”&#xff0c;创建一个新的工作站&#xff0c;如图2-1所示。图2-1 创建新工作站2.在“基本”功能选项卡中&#xff0c;打开“ABB模型库”&#xff0c;如图2-2所示。…...

Wan2.2-I2V-A14B镜像安全加固:禁用root登录+API密钥认证+访问白名单

Wan2.2-I2V-A14B镜像安全加固&#xff1a;禁用root登录API密钥认证访问白名单 1. 镜像安全加固的必要性 Wan2.2-I2V-A14B作为高性能文生视频模型&#xff0c;其私有部署镜像承载着重要的AI推理任务。在开放网络环境中运行时&#xff0c;系统安全防护不容忽视。未经加固的镜像…...