7.redis-集群

news2024/12/28 4:23:44

目录

1. 概念

2. 三主三从redis集群配置

3. redis集群读写

4. 主从扩展案例

5.主从降容案例

6.用到的命令


1. 概念

  1).分片: 集群中的每个redis实例都被认为是整个数据的一个分片,官方建议是最大1000个

  2).槽位: redis集群有16384个哈希槽,每个key通过CRC16校验后通过总分片数量,对16384取模来决定放哪个槽,集群的每个节点负责一部分hash槽位。

  3).槽位算法 哈希取余,一致性哈希算法,哈希槽

2. 三主三从redis集群配置

  1) 3台虚拟机,各自创建 mkdir -p /myredis/cluster

  2) 新建6个独立的redis实例,次处只列出一个配置,其他配置改相应的端口号就可以

bind 0.0.0.0
daemonize yes
protected-mode no
port 6381
logfile "/myredis/cluster/cluster6381.log"
pidfile /myredis/cluster/cluster6381.pid
dir /myredis/cluster
dbfilename dump6381.rdb
appendonly yes
appendfilename "appendonly6381.aof"
requirepass 123456
masterauth 123456

cluster-enabled yes
cluster-config-file nodes-6381.conf
cluster-node-timeout 5000

  3) 分别在三台服务器上启动6个实例

# 192.168.3.128

redis-server /myredis/cluster/redisCluster6381.conf

redis-server /myredis/cluster/redisCluster6382.conf

# 192.168.3.129 

redis-server /myredis/cluster/redisCluster6383.conf

redis-server /myredis/cluster/redisCluster6384.conf

#192.168.3.130

redis-server /myredis/cluster/redisCluster6385.conf

redis-server /myredis/cluster/redisCluster6386.conf

  4) 通过redis-cli 命令为6台机器构建集群关系,

redis-cli -a 123456 --cluster create --cluster-replicas 1 192.168.3.128:6381 192.168.3.128:6382 192.168.3.129:6383 192.168.3.129:6384 192.168.3.130:6385 192.168.3.130:6386

     --cluster-replicas 1 表示为每个maser创建一个slave节点

 

  5) 链接进入6381作为切入点,查看并检验集群状态

info replication

cluster info

cluster nodes

3. redis集群读写

  1) 登录

redis-cli -a 123456 -p 6381 -c

  2) 查看某个key属于对应的槽位值

cluster keyslot 键名称

4. 主从容错切换迁移案例

  1) 主6381和从机切换,先停止主机6381

redis-cli -a 123456 -p 6381 shutdown

  2) 再次查看集群信息,本次6381主6384从

       此时从变成主

  3) 随后,6381原来的主机回来了,是否会上位

      曾经的主变成从

  4) 手动故障迁移or节点从属调整如何处理, 强制让6381做为主节点

redis-cli -a 123456 -p 6381

cluster failover

4. 主从扩展案例

  1) 新创建6378,6388两个服务实例

# 192.168.3.131

redis-server /myredis/cluster/redisCluster6387.conf

redis-server /myredis/cluster/redisCluster6388.conf

  2) 将新增加的6387节点作为master节点加入原集群

redis-cli -a 123456 --cluster add-node 192.168.3.131:6387 192.168.3.128:6381

  3) 检查集群情况第1次,此时没有分配槽号

redis-cli -a 123456 --cluster check 192.168.3.128:6381

  4) 重新分派槽号

redis-cli -a 123456 --cluster reshard 192.168.3.128:6381

这个值=16384 / master节点数 = 4096

     谁来接收这个槽位,复制 6387的RunID

        输入 all

       输入yes

  5) 检查集群情况第2次

redis-cli -a 123456 --cluster check 192.168.3.128:6381

  6) 3687实例的槽位是从已有的三个主节点中分配一段,而不是全部重新分配

  7) 为主节点6387分配从节点6388

        命令: redis-cli -a 密码 --cluster add-node ip:新slave端口 ip:新master端口

                                           --cluster-slave  --cluster-master-id 新主机节点ID,6387的ID

redis-cli -a 123456 --cluster add-node 192.168.3.131:6388 192.168.3.131:6387 --cluster-slave --cluster-master-id 4e8ad91bf03e1d6cc9b1068a3b3783b6fc675064

   8) 检查集群情况第3次

redis-cli -a 123456 --cluster check 192.168.3.128:6381

5.主从降容案例

  1) 先获取从节点6388的节点ID

redis-cli -a 123456 --cluster check 192.168.3.131:6388

  3) 从集群中将6388删除

redis-cli -a 123456 --cluster del-node 192.168.3.131:6388 c7f076d01bef40047750c89cbee34e6abb690285

  4) 检查是否剩下7个,同时复制6381的RunID

redis-cli -a 123456 --cluster check 192.168.3.128:6381

  5) 清空6387的槽号,重新分配,本例将清出来的槽号都给6381

redis-cli -a 123456 --cluster reshard 192.168.3.128:6381

  6) 删除6387

redis-cli -a 123456 --cluster del-node 192.168.3.131:6387 4e8ad91bf03e1d6cc9b1068a3b3783b6fc675064

  7) 查看结果

redis-cli -a 123456 --cluster check 192.168.3.128:6381

6.用到的命令

# 查看集群节点信息

redis-cli -a 密码 --cluster check host:port

# 创建集群

redis-cli -a 123456 --cluster create --cluster-replicas 1 host1:port1 host2:port2

# 登录

redis-cli -a 123456 -p 6381 -c

# key属于对应的槽位值

cluster keyslot 键名称

# 重新分配槽位

redis-cli -a 密码 --cluster reshard host:port

# 为主节点添加从节点

redis-cli -a 密码 --cluster add-node ip:新slave端口 ip:新master端口

                          --cluster-slave  --cluster-master-id 新主机节点ID,6387的ID

# 删除节点

redis-cli -a 密码 --cluster del-node host:port node_id

# --------------------------------------------------

info replication #

cluster info       # 当前节点的集群信息

cluster nodes   # 所有节点集群信息

cluster failover  # 指定从节点发起转移

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

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

相关文章

Mac平台上有哪些好用的常用软件?

我大概分几类给你介绍一下吧。 一、办公类 1.微软的office系列,在mac平台也有office的全家桶,习惯用微软office的也可以安装。 2.wps office,wps可以说是国产最好用的office软件,最重要的是wps可以跨平台,并且云文档…

C/C++程序设计——static关键字

一、修饰局部变量 (1)称为静态局部变量,改变局部变量的生命周期,生命周期由局部变为全局。 (2)作用域不发生改变。 (3)静态局部变量只能被初始化一次。 本质: 改变了局…

获取UNIX系统时间

① 基本认识 UNIX系统时间主要分为两种: 日历时间 和 进程时间 ② 日历时间 该时间是自协调时间时间 1970年1月1日 00:00:00这个特定时间来计算累积的秒数。(称为UTC 格林尼治标准时间) 时间值是存放在系统类型time_t里面. ③ 进程时间 也称为…

redis哨兵模式配置(配置文件等)

Redis-Sentinel机制主要用三个功能: (1)监控:不停监控Redis主从节点是否安装预期运行 (2)提醒:如果Redis运行出现问题可以 按照配置文件中的配置项 通知客户端或者集群管理员 (3)自动故障转移:当主节点下线之后,哨兵…

OpenGL 简介

OpenGL 简介 GPU 接口规范 对于刚接触 OpenGL 的初学者,常常会有这样一个疑问: OpenGL 的源码在哪里,如何编译? 然而实际上 OpenGL 并不是一个软件实现,更多的是一个标准协议; OpenGL 更像是一种显卡驱动标准,由各个硬件厂家适配,各个硬件厂商根据 OpenGL 接口规范编撰对应的…

【系统集成项目管理工程师】项目进度管理

💥十大知识领域:项目进度管理 主要考计算题 项目进度管理包括以下 7 个过程: 规划进度管理过程定义活动过程排列活动顺序过程估算活动资源过程估算活动持续时间过程制定进度计划过程控制进度过程 一、规划进度管理过程 制定政策、程序和文档以管理项目进…

亲测:腾讯云轻量应用服务器性能如何?

腾讯云轻量应用服务器性能评测,轻量服务器CPU主频、处理器型号、公网带宽、月流量、Ping值测速、磁盘IO读写及使用限制,轻量应用服务器CPU内存性能和标准型云服务器CVM处于同一水准,所以大家不要担心轻量应用服务器的性能,腾讯云百…

【CSS】13.页面切图和布局实现

页面切图和布局实现 1. 浮动布局 1.1 页面布局 LOGO 部分 NAV 布局 LEFT - SIDEBAR:左边栏布局 CONTENT:内容布局 RIGHT - SIDEBAR:右边栏布局 1.2 流式布局 块的默认布局叫做流式布局 但流式布局并不能满足对页面的需要&#xff0c…

(学习日记)2023.4.10

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

杰林码图像增强算法——超分辨率、图像放大、轮廓和色彩强化算法(二)

一、前言 2023-03-23我发布了基于加权概率模型(杰林码的理论模型)的图像颜色增强和轮廓预测的应用方法。效果还不太明显,于是我又花了2周的时间进行了技术优化。下面仅提供了x86下的BMP和JPG对应的lib和dll,本文中的算法属于我国…

为什么CPU需要时钟

为什么CPU需要时钟 为什么CPU需要时钟这样一个概念? 什么是时钟脉冲,CPU为什么需要时钟,时钟信号是怎么产生的? 上面这个图的方波就是一个脉冲,类比于人类的脉搏跳动。一个脉冲称之为CPU的一个时钟信号,或者时钟脉冲…

Melis4.0[D1s]:6.mango-MQ-R基于Melis移植lvgl

文章目录1.下载lvgl源码到《D1s-Melis/ekernel/drivers/hal/test/disp2》目录1.1 修改Makefile1.2 快速测试Makefile修改是否有效2.移植刷新显示内存函数dummy_flush_cb3.创建一个定时器调用lvgl心跳lv_tick_inc()4.pack打包出错:5.设置开机启动6.源码下载上一篇文章…

《类和对象》(上)

本文主要对类和对象有一个初步的了解。 文章目录前言1、类的引入和定义2、类的访问限定符及封装2.1 访问限定符2.2 封装3 、类的作用域4 、类的实例化5 、类对象的模型5.1 类对象的大小5.2 类对象存储方式6、this 指针6.1 引子6.2 特性6.3 this指针的一个问题前言 C语言是面向过…

【微信小程序】-- 分包 - 独立分包 分包预下载(四十五)

💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…

VRIK+Unity XR Interaction Toolkit 实现VR上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法)

文章目录📕第一步:配置 OpenXR XR Interaction Toolkit 的开发环境📕第二步:导入人物模型⭐VRM 模型导入 Unity 的方法📕第三步:配置 VRIK⭐给模型加上 VRIK 组件⭐将模型的头部和手部的位置作为 VR 追踪目…

如何用ChatGPT做设计?激发设计师们的灵感

伴随着人工智能技术的迅猛发展,AI 工具在设计领域中的应用也越来越广泛。 当前,诸如ChatGPT等 AI 工具不仅可以进行自然语言处理,还可以应用于图像、视频等多种媒体领域,为设计师们提供了丰富的应用场景。 使用Chatgpt&#xff1…

开源了,我做了一个基于GPT的桌宠聊天系统:Pet-GPT!

前言 最近chatgpt的热度高居不下。作为一个深度成谜者,发现大部分开发者在调用GPT的时候要不就是基于Tauri做本地窗口外接网页,要不就是web直接展示。在沉思苦想一段时间后,才发现好像没啥什么人用pyqt做啊?特别是没人用桌面宠物…

浏览器:好用的浏览器插件,亲测好用

插件一、CSDN,推荐指数五颗星,强烈推荐 说明:超级好用的浏览器桌面,功能强大,操作简单,效率神器 插件二、AIX智能下载器 说明: 就这么简单的拖放即可实现保存图片,即使观看中的视频…

凌恩生物美文分享|好看又实用,多组学联合分析项目大揭秘!

基因层面的功能潜能有没有真的实现表达,表达量是高是低?下游合成的蛋白质行使了什么样得功能,代谢产物通过体循环到达靶器官,又是如何影响靶器官的工作运行的? 一个完整的生物学故事,中心法则贯穿始终&…

2023十大连锁店进销存软件排名(真实测评)

目前市面上很多连锁店进销存软件的排名都比较主观,结合自己实际工作过程中接触过的软件和在进销存软件多年的经验,给大家整理下2023十大连锁店进销存软件,希望能帮到正在选择连锁店进销存软件的老板! 第一名:秦丝连锁联…