Redis集群管理工具redis-trib

article/2025/10/31 9:34:02

    Redis3.0 及其之后的版本提供了 redis-cluster 集群支持,用于在多个redis节点间共享数据,以提高服务的可用性。构建 redis-cluster 集群可以通过 redis-trib.rb 工具来完成。redis-trib.rb 是redis官方提供的一个集群管理工具,集成在redis安装包的 src 目录下。redis-trib.rb 封装了redis提供的集群命令,使用简单、便捷。

一、搭建集群

  (1)因为 redis-trib.rb 是由ruby语言编写的,所以使用该工具需要ruby语言环境的支持。

(2)要启用redis-cluster集群,需要先修改redis配置文件集群配置部分的内容(xxxxredis.conf)

  1. cluster-enabled yes :启用redis-cluster集群
  2. cluster-config-file nodes-6379.conf:集群节点配置文件,该文件无需手工修改,由redis自动维护(创建和更新), 需要注意,单机运行多实例时,确保该文件没有被其他实例覆盖(不允许重名)
  3. cluster-node-timeout 15000:节点超时时长(毫秒)

为了方便进行演示,这里分别以端口 637963806381 各启用一个实例来代表不同的redis服务器

开启3台redis服务,查看进程

(3)创建集群

创建集群使用create 命令完成,create 命令的格式为:

redis-cluster集群至少需要3个可用节点。

(4)查看集群:使用info命令

(5) 当系统因为意外宕机,重启所有节点,集群会自动恢复。

二、主从复制模型

    刚才说到,redis-cluster至少需要保证3个节点可用。那么为了避免节点宕机导致服务不可用,我们就需要添加主从配置,为集群中的节点增加从节点;使其在主节点宕机时,能够将从节点提升为主节点代替原来的主节点进行工作。

在非集群的单节点环境中,配置主从关系的方法大致有 2 种:

  1. 修改从服务器配置文件 redis.conf 的 slaveof <masterip> <masterport> 选项;
  2. 在从服务器上使用slaveof 命令直接指定主服务器。

然而在redis-cluster集群环境中,启用了cluster配置的情况下slaveof 是不可用的。此时我们需要借助于 redis-trib.rb 工具来进行从节点的添加操作,先将节点加入集群中,然后再声明节点为原有节点的从节点。

(1)启用服务后先将该节点加入集群,直接使用redis-trib.rb的 add-node 命令即可实现:

格式:redis-cli --cluster add-node new_host:new_port existing_host:existing_port

查看到该节点已经成功加入了集群中,并且该节点并没有分配哈希槽

(2)声明该节点为集群中某一节点的从节点,需要使用客户端进入该节点(此处即为新增的从节点 6382)进行设置,使用 cluster replicate 命令指定所属主节点ID。

主节点ID可以使用客户端连接到集群后通过命令 cluster nodes 查看 :

把6382节点设置为6379的从节点

查看集群,可以看到6379下又一个从节点

查询出 6379 端口服务对应的PID,然后通过 kill 将服务关闭,使该节点在集群上不可用;此时查看集群信息,能够发现从节点 6382 自动提升为主节点,顶替了不可用的 6379 节点。

重新启动已宕机的服务后,该节点将会被当做从节点添加到管理原先的哈希槽分配范围的节点上。这里也就是添加到了 6382 节点上,6382 节点管理的哈希槽就是原先由 6379节点所管理的

三、客户端连接 redis-cluster

客户端在连接 redis 服务器时带上参数 -c 即为连接到cluster集群

可以看到,在 6380 端口的服务器上存储一个string类型的键值对 k1= v1的时,操作被重定向到了 6381 端口的服务器上,而 k1= v1这个键值对最终也被存储在了 6381 端口的服务器里。

同理,在获取数据时,也会重定向到对应数据实际存储的服务器上,然后在该服务器上进行操作。

四、单独连接集群上的节点

    需要注意的是,节点在加入集群后,如果不声明参数 -c 连接集群而是单独连接集群上的节点,那么在操作时如果需要重定向到其他的服务器,是无法成功重定向然后完成操作的。

例如键值对 k1= v1存储在 6381 端口的服务器上,此时如果我们单独连接到 6380 端口的服务器上进行操作,那么该操作是无法成功的。

而如果无需重定向,则能成功完成操作。

五、Spring整合 redis-cluster

<!-- jedis连接池配置 --><bean id="jedisPoolConfig"class="redis.clients.jedis.JedisPoolConfig"><!-- 同一时刻可分配最大连接数 默认值8 设置为负数时不做限制 --><property name="maxTotal" value="8"></property><!-- 最大空闲连接 默认8个 超出连接将被释放 --><property name="maxIdle" value="8"></property><!-- 请求连接最大等待时间(毫秒),默认值 无限期 ,超出时间将抛出异常 --><property name="maxWaitMillis" value="3000"></property></bean><!-- jedis集群配置 --><bean id="jedisCluster" class="redis.clients.jedis.JedisCluster"><constructor-arg name="nodes"><set><bean class="redis.clients.jedis.HostAndPort"><constructor-arg name="host" value="192.168.147.128"></constructor-arg><constructor-arg name="port" value="6379" /></bean><bean class="redis.clients.jedis.HostAndPort"><constructor-arg name="host" value="192.168.147.128"></constructor-arg><constructor-arg name="port" value="6380" /></bean><bean class="redis.clients.jedis.HostAndPort"><constructor-arg name="host" value="192.168.147.128"></constructor-arg><constructor-arg name="port" value="6381" /></bean><bean class="redis.clients.jedis.HostAndPort"><constructor-arg name="host" value="192.168.147.128"></constructor-arg><constructor-arg name="port" value="6382" /></bean></set></constructor-arg><constructor-arg name="poolConfig"ref="jedisPoolConfig" /></bean>

测试代码:

@Testpublic void test() {ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");JedisCluster jedisCluster = context.getBean("jedisCluster",JedisCluster.class);Assert.assertNotNull(jedisCluster);String result = jedisCluster.set("k2", "v2");Assert.assertNotNull(result);Assert.assertEquals("OK", result);String value = jedisCluster.get("k2");Assert.assertNotNull(value);Assert.assertEquals("v2", value);}

运行成功 

 如果本文对您有很大的帮助,还请点赞关注一下。

 


http://chatgpt.dhexx.cn/article/InHWPEYR.shtml

相关文章

推荐一款 Redis 可视化管理工具——Another Redis Desktop Manager

文章目录 :pushpin: 简介:clipboard: 基础配置基础设置 :pencil2: 使用方法1.连接Redis实例2.监控Redis性能3.执行Redis命令 :tada:下载安装1.下载地址2.安装 &#x1f4cc; 简介 Redis是一种快速、高效的NoSQL数据库&#xff0c;广泛用于缓存、会话管理、消息队列等领域。为了…

mac安装redis管理工具rmd

2019独角兽企业重金招聘Python工程师标准>>> 官网教程&#xff1a;http://docs.redisdesktop.com/en/latest/install/#build-from-source 1、从官网下载最新源码 转载于:https://my.oschina.net/carmen001/blog/825983

redis web工具

安利web版redis管理工具一款&#xff0c;首先来个正面照 界面看上去挺简洁&#xff0c;下面就演示如何得到他 本机 Python 2.7.5 Linux dev 3.10.0-862.14.4.el7.x86_64 #1 SMP Wed Sep 26 15:12:11 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux 命令行&#xff1a; git clone …

Redis 管理工具:Another Redis DeskTop Manager

Another Redis DeskTop Manager 简介 Another Redis DeskTop Manager 是 Redis 可视化管理工具&#xff0c;体积小&#xff0c;完全免费。最重要的是稳定啊&#xff0c;而且操作简单、方便&#xff0c;特别推荐~ ▶ github 地址 ▶ 快速下载&#xff08;github下载太慢&…

Macos安装redis及redis可视化管理工具

目录 1.首先将clashX的系统代理复制为终端代理&#xff0c;这样可以使用国外镜像源 2.安装完成之后会有如下的提示&#xff1a; 3.redis的安装路径&#xff1a; 4.将redis设置为后台运行 5.运行redis&#xff1a; 6.停止redis服务&#xff1a; 7.安装可视化工具 1.首先将…

开源Redis管理工具: ManGe-Redis

ManGe Redis 工具 https://github.com/mangenotwork/mange_redis_manage 项目简介 ManGe redis 工具是一款redis操作&#xff0c;监控&#xff0c;预警&#xff0c;远程备份等功能集成的工具&#xff1b;该工具属于开发类辅助工具&#xff1b;该工具先选型为B/S架构&#xff1b…

redis命令工具

1&#xff1a;Redis 命令工具 Redis 提供了多个命令工具&#xff0c;这些命令工具的作用分别如下所示&#xff1a; redis-server &#xff1b; 用于启动redis的工具&#xff0c;redis-benchmark&#xff1b; 用于检测redis在本机的运行效率redis-check-aof&#xff1b; …

Redis桌面管理工具远程连接宝塔redis服务

Redis桌面管理工具远程连接宝塔redis服务 下载安装包 中文版&#xff1a;链接: https://pan.baidu.com/s/1tEzBYG167-7W0f3ybM4-fA 提取码: 269s 配置redis.conf 注释掉 bind 127.0.0.1 ::1这行 ################################## NETWORK #############################…

redis 管理工具比对

目录 基本信息 基于Java的CacheCloud和RedisManager使用总结 CacheCloud&#xff1a; RedisManager&#xff1a; 两者差异&#xff0c;RedisManager欠缺的&#xff1a; 两者的共同障碍&#xff1a; Redis Monitoring tools and useful links 参考链接 以下内容摘自雪球…

一款超好用的 Redis 可视化管理工具

JavaGuide &#xff08;「Java学习面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试&#xff0c;首选 JavaGuide&#xff01;&#xff09; 开源版的兄弟 《Java 面试指北》已经出生。个人能力和精力有限&#xff0c;希望有更多同好参与到 JavaGuide …

关于目前流行的 Redis 可视化管理工具的详细评测

起因&#xff1a;公司让我在网上找一个 ubuntu 上的 Redis 的管理工具&#xff0c;找了一圈&#xff0c;怎么说合适勒&#xff0c;就是搜索到的文章基本上长一个样 &#xff0c;内容都是偏向于介绍&#xff0c;然后我就想着来写一篇评测相关的文章&#xff0c;来让大家更好的做…

Redis Desktop Manager – Redis可视化管理工具、redis图形化管理工具、redis可视化客户端、redis集群管理工具

Redis Desktop Manager – 个人认为是目前最好用的Redis可视化管理工具。 redis可视化工具、Redis可视化管理工具、redis图形化管理工具、redis可视化客户端、redis集群管理工具 一、Windows系统Redis管理工具安装方法如下: 1、进入Redis Desktop Manager在git的发行版(免…

idea开发环境配置

1、idea安装 直接百度下载安装包安装即可 2、jdk安装 下载后图形化安装--一路点点点即可 环境变量配置&#xff1a; vi /etc/profile 在文件尾添加以下内容&#xff1a; JAVA_HOME/usr/local/java/jdk1.8.0_221 自己的jdk安装路径 PATH&#x1d43d;&#x1d434;&#x…

Hbuilder X 开发APP指南

开发环境HBuilder X 开发环境Hbuilder下载Vant轻量、可靠的移动端 Vue 组件库&#xff08;参考文档&#xff09;HTML5中国产业联盟&#xff08;参考文档&#xff09; 平台支持 iOSAndroid FirstAPP 启动HbuilderX在菜单栏中选择“文件”-> “新建”->“项目”&#x…

MacOS开发环境搭建

一.软硬件准备 MacOS电脑 Xcode软件&#xff0c;在AppStore中搜索Xcode并安装&#xff0c;安装过程比较长&#xff0c;需要耐心等待。 二.新建工程 打开Xcode&#xff0c;创建工程&#xff0c;选择macOS里面的App选项&#xff0c;点击Next 出现弹框后&#xff0c;输入Prod…

混合App开发,HBuilder开发移动App

使用HBuilder开发混合App&#xff1a; Hbuilder&#xff1a;是一个在线打包工具&#xff0c;不需要在本地配置开发环境&#xff1b;直接将做好的网站&#xff0c;通过一些简单的操作&#xff0c;就能在线打包为一个App&#xff1b; 混合APP开发常见技术&#xff1a;Html5、Re…

安卓物联网APP开发——基于编辑物联网平台环境实现远程控制数据传输

本篇博客主要对app进行开发来实现对esp系列芯片的远程控制&#xff0c;通过mqtt协议来进行数据的传输&#xff0c;用wifi模块接收数据串口收发数据到单片机上使用&#xff0c;可远程操控。 APP开发&#xff08;Android Studio&#xff09; 通过Android Studio来设计软件&…

appinventor拓展开发

为什么要开发拓展&#xff1f; 想要使用appinventor标准支持的以外功能只有两种方式。 1.直接修改appinventor的源码&#xff0c;添加新的功能&#xff0c;然后使用这个私人定制的服务器。 2.编写拓展&#xff0c;可以添加到任何可以正常使用的appinventor服务上。 第二种的…

uni-app开发环境配置及混合开发流程

uni-app开发环境配置及混合开发流程 NodeJS开发环境 安装NVM 下载安装 NVM是一个支持多版本NodeJS的版本管理工具&#xff0c;如果本机已安装了NodeJS建议先卸载。 下载NodeJS 解压后直接运行安装&#xff1a;设置好安装目录及后面NodeJs的安装目录。 配置环境变量 路径…

create-react-app 开发环境编译太慢的解决方案

项目环境&#xff1a;windows 10 1089版本 create-react-app&#xff1a;3.0.0 react&#xff1a;16.8.6 react-router-dom&#xff1a;5.0.0 方案一 使用 babel-plugin-dynamic-import-node 原理&#xff1a;转换 import()为 require()&#xff0c;将所有异步组件都用同步的…