redis cluster实现

redis集群下,监听过期通知 踩坑记录!做一个redis过期通知需求 我采用修改redis.conf中的notify-keyspace-events "Ex",再建监听类来监听这一事件。但是由于我的redis是集群环境,有3*2=6个节点,这就导致我的过期通知只有1/6的机会监听的到!!即有时成功有时失败,我找了很久原因! 正确处理,直接上代码: pom.xml: <dependency>... 阅读详情

Redis 集群

Redis cluster 介绍:

Redis 集群是指可以在多个Redis 节点中自动共享的设施。Reids 集群不支持同事涉及多个键的redis 命令(因为有可能需要移动数据在不同的节点导致性能下降和不和预知的问题。)。

Rediscluster的作用:

1.      可以切分数据到多个节点中(通过hash slot),类似关系数据库的表分区。

2.      可以继续正常工作当部分节点失效或者无法通讯。

Rediscluster使用端口:

1.      客户端通讯端口(6379):用来支持客户端连接通信并提供服务。

2.      节点通讯端口(16379):用来支持当前节点和其他节点进行通讯,数据迁移等。

以上2个端口是每一个节点都必须绑定的端口,否则 cluster不会正常工作。

 

安装Redis

1.      下载redis 3.0源码版本 如:redis-3.0.0-beta1.tar.gz

$ tar –zxvf redis-3.0.0-beta1.tar.gz

$ cd redis-3.0.0-beta1/src

$ cp redis-benchmark redis-serverredis-cli /usr/local/bin

$ ../cp redis.conf/etc/redis/redis.conf

2.      安装 Ruby

$ sudo apt-get install rubyirb rdoc

安装Ruby 的redis接口:

$sudo geminstall redis 

配置Redis-cluster

Redis是通过配置文件来启动特定的服务,所以我们就采用多个配置文件来模拟多个node。构成cluster至少需要3个节点组成,模拟的时候也建议为每个简单配置slave,用来提到通讯异常的master节点。redis-3.0.0包里面有个自带的Ruby工具可以配置自完成建集群的hash slot分配(16384),各节点建立通讯等工作。

1.      建立6个redis工作目录

$mkdir 6379  6380 6381  6382  6383 6384  6385


2.      生成配置文件

复制/etc/redis/redis.conf5份分别对应redis6380.conf redis6381.conf redis6382.conf redis63803.conf redis6384.confredis6379.conf

3.      开启cluster、配置

修改每一个配置文件对应下面的选项:

port 6379

cluster-enable yes

cluster-config-filenodes6379.conf

cluster-node-timeout 5000

appendonly yes

dir  direcotry(为1步创建的对应目录)

4.      启动6个对应的服务,为了测试方便使用非后面运行模式(daemonize no)

$sudo redis-server/etc/redis/redis6379.conf

5.      利用redis 源码中的src/ redis-trib.rb自动搭建redis-cluster

$ ./redis-trib.rb create --replicas 1127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383127.0.0.1:6384

--replicas为每一个节点创建slave, 1表示创建一个从节点

执行完会打印一份配置文件:如果正确选择yes继续


连接成功显示:


利用redis-cli客户端查看cluster信息:


测试

1.      连接6379设置key

$ redis-cli -c -p 6379


2.      从其他节点访问

$ redis-cli -c -p 6380

集群管理:

1.      对集群重新分片:

利用源码中src/redis-trib.rb工具

$./redis-trib.rb reshard127.0.0.1:6379  (指定集群中任意可以通讯的节点即可)

根据提示选择需要移动的slots数据

选择需要移动slots的源节点(all表示所有, 选择特定的话使用id, 用done结束选择)

选择需要的目标节点

2.      检测节点是否正常:

$./redis-trib.rb check127.0.0.1:6379

3.      添加节点:

$./redis-trib.rb addnode127.0.0.1:6386 127.0.0.1:6387

利用集群重新分片为新节点分配slot

为主节点添加slave, 只需要登录slave客户端(redis-cli –c -p) 执行cluster replicate master_node_id即可

4.      移除节点:

$./redis-trib.rb del-node127.0.0.1:6379 node_id  (第一个地址为任意可连接地址,node_id为需要移除的节点id)

 

5.      redis-cluster相关命令:

cluster meet other_node_id  :以其他node建立通信

cluster addslotsslot1..slotN :为节点添加hash slot (或者修改修改nodes.conf文件在mysql记录末尾加上slot范围,不建议修改此配置文件)

cluster delslots

cluster setslots

 

参考链接:

http://redis.io/topics/cluster-tutorial

Redis Cluster集群的实现原理 在这个部分总结了2019年到目前为止Java常见面试问题,取其面试核心编写成这份文档笔记,从中分析面试官的心理,摸清面试官的“套路”,可以说搞定90%以上的Java中高级面试没一点难度。本节总结的内容涵盖了:消息队列、Redis缓存、分库分表、读写分离、设计高并发系统、分布式系统、高可用系统、SpringCloud微服务架构等一系列互联网主流高级技术的知识点。(上述只是一个整体目录大纲,每个点里面都有如下所示的详细内容,从面试问题——分析面试官心理——剖析面试题——完美解答的一个过程) 阅读详情

相关推荐

【Redis】redis cluster模式实现双机房容灾切换

Redis的cluster集群模式能够自动实现主从之间的自由切换,所以在单个机房中Redis cluster集群中,当Master宕机后,Slave会被其他Master投票选举为新的Master,从而实现故障切换。今天我们要探讨的问题是相距两地的机房中怎么实现Redis cluster集群模式的容灾切换。 目录一、redis的集群搭建测试集群一测试集群二二、redis cluster相关知识 一、redis的集群搭建 测试集群一 Master Slave 172.18.40.129:6.

羽觞醉月 5112

RedisClusterPubSubAdapter

教你如何实现RedisClusterPubSubAdapter 在现代应用中,使用Redis作为消息中间件已经非常普遍,特别是在处理高并发场景时。今天,我们将学习如何实现一个RedisClusterPubSubAdapter,并通过具体步骤展示其实现过程。 流程概述 下面是实现RedisClusterPubSubAdapt...

weixin_41491393的博客 184

【Redis】—— 借助redis-cluster-proxy实现Kubernetes外部服务无缝访问Redis Cluster

本文详细介绍了如何借助redis-cluster-proxy在Kubernetes环境中实现外部服务无缝访问Redis Cluster。通过分析Redis Cluster的访问困境,提出使用redis-cluster-proxy作为中间层,实现客户端零改造、动态拓扑感知和协议兼容。文章还提供了Kubernetes中的部署实践、高级特性调优建议及常见问题排查方法,帮助开发者高效解决Redis Cluster在云原生环境中的访问难题。

weixin_42524945的博客 421

集群下的redis过期监听

集群下的redis过期监听 转载:https://blog.youkuaiyun.com/xuyide6/article/details/86686152 修改redis.conf中的notify-keyspace-events “Ex”,再建监听类来监听这一事件 话不多说直接上代码 1.配置pom文件 <dependency> <groupId>org.spr...

qq_27431193的博客 1568

【理论&实战篇】大模型RAG技术详解(一)-基础篇

RAG的初衷是为了增强大模型的事实性、时效性,减少幻觉,引入专业知识优化生成回复,是一种结合了信息检索技术与语言生成模型的人工智能技术。通过,并将其作为提示(Prompt)输入给大模型(LLM),来。

qq_41375680的博客 374

Ubuntu 24.04 下 NoMachine 极速安装与远程桌面配置全攻略

本文详细介绍了在Ubuntu 24.04系统下安装和配置NoMachine远程桌面的完整指南。从系统准备、分步安装到性能调优和常见问题解决,帮助用户快速实现低延迟的远程桌面访问。特别适合开发者和IT管理员在Linux环境下高效部署远程工作环境。

moon9的博客 945

Lettuce核心库中的Redis发布/订阅机制详解

Redis的发布/订阅(Pub/Sub)模式是一种消息通信模式,它允许客户端订阅一个或多个频道,当其他客户端向这些频道发布消息时,所有订阅者都会收到通知。Lettuce作为一款优秀的Redis客户端,为这种模式提供了全面的支持,包括独立Redis实例和Redis集群环境。 ## 核心概念 在深入使用之前,我们需要理解几个关键概念: 1. **频道(Channel)**:消息传输的通道,订阅者...

gitblog_00324的博客 529

5G NR切换测量事件解析:从A1到B2的实战应用指南

本文深入解析5G NR切换测量事件,从A1到B2的实战应用指南。详细介绍了系统内切换事件(A1-A6)和系统间切换事件(B1-B2)的触发条件与配置建议,帮助优化网络性能。通过实际案例分享,展示如何调整参数提升切换成功率和降低乒乓切换率,适用于5G网络优化工程师。

tcp8optimizer的博客 513

redis pub/sub原理及实战

目录 概念 原理 订阅 发布 使用 Subscribing Reactive API Redis Cluster 概念 Redis同样支持消息的发布/订阅(Pub/Sub)模式,这和中间件activemq有些类似。订阅者(Subscriber)可以订阅自己感兴趣的频道(Channel),发布者(Publisher)可以将消息发往指定的频道(Channel),正式通过这种方式,可以将消息的发送者和接收者解耦。另外,由于可以动态的Subscribe和Unsubscribe,也可以提高系统的灵

iverson2010112228的专栏 2657

5GS 协议栈 — PFCP 协议 — URR 用量上报规则

目录 文章目录目录URR 用量上报规则UEE 的参数Usage Report 的参数示例 URR 用量上报规则 29244 5.2.2 Usage Reporting Rule URR 的作用? 用来告诉 UPF 如何对 PDR 识别的 SDF 或 Application 业务进行使用量统计信息的上报。CP 收到 Report Information 后,可用于计费或者管控(e.g. 超量限速)等用途。 URR 在哪个流程里下发的? N4 会话建立流程。 N4 会话修改流程。 URR 是怎么工作

烟云的计算 4591

3D 结构光相机工作原理全解 | 从编码投射到三维重建,原理 + 代码 + 工业实战一站式掌握

本文从3D结构光相机的整体架构出发,层层拆解了编码投射、相位计算、相位解包裹、三维重建的核心原理,补充了工业实战所需的公式推导、代码实现、参数调优、设备选型和案例落地,核心总结如下:相位是3D结构光成像的“灵魂”,其精度、稳定性直接决定3D重建的效果,包裹相位与绝对相位的区分的是工业实战的基础;编码投射的核心是“正弦条纹+格雷码条纹”组合,正弦条纹负责高精度相位提取,格雷码条纹辅助解包裹,适配工业场景的精度与稳定性需求;

getusushu的博客 414

Redis Cluster 实现原理

主要特性和设计原则 设计目标 Redis Cluster 支持的操作 Redis Cluster 协议中 Client 和 Server 的作用 写安全 可用性 性能 为什么没有 merge 操作 Redis Cluster 的主要组成部分 keys distribution model 哈希标签 hash tags 集群节点属性 集群总线 集群拓扑结构 节点间的握手 重定向和重新分...

javafreely的专栏 1980

弹窗提示报错: F:\c\CFX5\bin\Debug\net9.0-windows10.0.26100.0\CFX5.dll 面向无法动态枚举工具箱项目的平台...如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 947

Redis(139)Redis的Cluster是如何实现的?

Redis Cluster是Redis的分布式实现,通过16384个哈希槽实现数据分片,支持主从复制和自动故障转移。集群节点间通过集群总线通信,使用PING/PONG机制检测节点状态。主节点失效时,从节点通过投票机制接管成为新主节点。关键实现包括:基于CRC16的哈希槽分配、节点间通信协议以及定时检测和故障转移机制,确保数据的高可用性和负载均衡。

qq_43012298的博客 513

CCF编程培训师资认证(PTA)标准(教学能力T)

随着计算机科学的不断发展,计算机相关技术应用到社会各个行业,越来越多的青少年参加到了计算机程序设计的学习中,这对编程培训教师提出了更高的专业要求和职业要求。CCF开展编程培训师资认证项目(Programming Trainer Accreditation,PTA),旨在建立一个规范的、科学的、权威且有公信力的三方认证。认证考试分编程专业能力(P)和教学能力(T)两部分。本标准根据《CCF编程培训师资认证条例》第十条制定,旨在明确教学能力(T)的测试标准。

lan_in的博客 1712

Python + Playwright:集成 Applitools 进行视觉回归测试(快速入门)

Applitools是一款基于人工智能的视觉验证测试工具,专门用于自动化和验证应用程序的用户界面(UI);Applitools使用视觉回归测试来检测应用程序界面的变化,确保 UI 在不同版本之间的一致性;Applitools的核心功能是通过视觉比较,检测 UI 元素的差异,而无需手动编写复杂的界面检查代码;通过集成Applitools,测试人员可以轻松捕捉和验证界面中的视觉差异,无论是在Web移动端或桌面应用的测试环境;

blues_C的博客 2921

Redis Cluster 分区实现原理

Redis Cluster 分区实现原理

qq_41490913的博客 130

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Redis Cluster实现

背景: Redis 3.0之后支持了Cluster,大大增强了Redis水平扩展的能力。Redis Cluster是Redis官方的集群实现方案,在此之前已经有第三方Redis集群解决方案,如Twenproxy、Codis,与其不同的是:Redis Cluster并非使用Porxy的模式来连接集群节点,而是使用无中心节点的模式来组建集群。在Cluster出现之前,只有Sentinel...

大JAVA解决方案 844

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Redis Cluster实现原理

一、Redis Cluster主要特性和设计     集群目标     1)高性能和线性扩展,最大可以支撑到1000个节点;Cluster架构中无Proxy层,Master与slave之间使用异步replication,且不存在操作的merge。(即操作不能跨多个nodes,不存在merge层)     2)一定程度上保证writes的安全性,需要客户端容忍一定程度的数据丢失:集

权威 723

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

9.Redis Cluster的实现细节

Redis Cluster 实现本文将从设计思路,功能实现几个方面介绍Redis Cluster。(下面提到的epoch(类似于Raft算法“term”(任期))假设读者已经了解Redis Cluster的使用方式,不了解可以先看之前一篇介绍Redis Cluster的博客。简介Redis Cluster作为Redis的分布式实现,主要做了两个方面的事情:1,数据分片Redis Cluster将数...

郑学炜的技术博客 400

Redis(143)Redis的Cluster的重新分片是如何实现的?

Redis Cluster的重新分片过程包含三个关键步骤:1)选择要迁移的哈希槽,通过遍历源节点槽范围确定迁移目标;2)执行数据迁移,将选定槽的键值对从源节点传输到目标节点;3)更新集群元数据,调整节点槽范围映射。示例代码展示了如何实现槽选择、数据迁移和状态更新,其中包含节点结构体定义、槽选择算法以及集群状态同步逻辑。该过程确保了集群负载均衡,同时维护了数据一致性和服务可用性。

qq_43012298的博客 338

深入解析 Redis Cluster 架构与实现(一)

深入解析 Redis Cluster 架构与实现(一)

虽非技冠群英首,愿与同道共长歌; 大鹏一日同风起,扶摇直上九万里; 1530

Jedis实现批量删除redis cluster

在网上找了好几遍也没找到可以批量删除或者清空redis cluster的方法   我就用jedis写了一个          //获取jedis连接          private JedisCluster jedisCluster=JedisClusterUtil.getJedisCluster();          //@param pattern  获取key的前缀  全是是 *

原来的博客 1万+

Redis - 三种Redis集群实现方案之_路由查询(Redis Cluster)

其中的每个节点会互相通信,并且节点的信息、端口以及槽都会定期交换和更新,而数据的分片是采用虚拟槽(16384个)来实现的。路由查询的缺点是带宽消耗较大,例如节点之间的定时Gossip消息交换以及pub/sub广播存在数据倾斜的问题,当节点过大时本身的性能不高,不过可采取智能客户端来改善此问题。路由查询的优点是去中心化实现,部署比较简单,5.0版本后自带节点扩容和Codis,以及数据槽迁移工具,做到了业务无感知。返回MOVED 5798 NodeB。计算slot=5798。请求key=test。

小工匠 2894

redis cluster keys命令实现

redis cluster keys命令实现 redis整个db都是一个哈希字典表(不支持范围查找), 那这样的话keys命令需要遍历db里所有的key吗??渣浪多年前就热衷于用xxx_yyy_zzz_*的方式去匹配key了,为什么他们热衷于这样做, 是不是redi...

weixin_30907523的博客 1272
上一篇: ubuntu添加用户未指定shell,ll别名等无法是使用
下一篇: redis 主从实现
youbo_sun
博客等级 码龄12年 20粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值