码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Redis学习笔记】第十三章 Redis集群


    文章目录

    • 1、集群简介
    • 2、Redis集群结构设计
      • 2.1 数据存储设计
      • 2.2 集群内部通讯设计
    • 3、cluster集群结构搭建
      • 3.1 配置文件相关
      • 3.2 集群管理工具-redis-trib
      • 3.3 集群数据的写入与获取
      • 3.4 节点故障模拟

    在这里插入图片描述



    1、集群简介

    集群就是使用网络将若干台计算机联通起来,并提供统一的管理方式,使其对外呈现单机的服务效果

    在这里插入图片描述
    集群的作用:

    • 分散单台服务器的访问压力,实现负载均衡
    • 分散单台服务器的存储压力,实现可扩展性
    • 降低单台服务器宕机带来的业务灾难

    在这里插入图片描述

    2、Redis集群结构设计

    2.1 数据存储设计

    集群中,Redis内存空间好几块,由key通过算法计算出应该保存的位置

    在这里插入图片描述

    注意每个小格子代表的是一个存储空间,也叫槽。
    在这里插入图片描述

    集群中一个机器持有一定的槽,增节点时,把他们的槽分一部分给新的机器,去节点时,把它的槽再分给现存的节点机器上,由此方便扩展。


    2.2 集群内部通讯设计

    各个数据库相互通信,保存各个库中槽的编号数据,简单说就是每个节点都有张表。访问数据时:

    • 一次就命中找到了,直接返回
    • 一次未命中,告知具体位置

    在这里插入图片描述

    3、cluster集群结构搭建

    3.1 配置文件相关

    Cluster节点的conf配置


    • 将机器开启为集群中的节点
      cluster-enabled yes|no

    • 配置文件名,该文件属于自动生成
      cluster-config-file filename,如 nodes-6379.conf

    • 节点服务响应超时时间,用于判定该节点是否下线
      cluster-node-timeout milliseconds

    • master连接的slave最小数量
      cluster-migration-barrier 值

    3.2 集群管理工具-redis-trib

    redis-trib.rb是官方提供的Redis Cluster的管理工具,在src目录下,其运行环境的配置与具体用法跳这篇细细看:

    =======================>传送门
    【Redis学习笔记】redis-trib.rb命令详解

    在这里插入图片描述

    redis-trib.rb集群管理指令精简版:

    ---------------------------------------------------

    • 创建集群
      redis-trib.rb create host1:port1 … hostN:portN --replicas
    • 检查集群
      redis-trib.rb check host:port
    • 查看集群信息
      redis-trib.rb info host:port
    • 添加新节点
      redis-trib.rb add-node new_host:new_port ……
    • 删除节点
      redis-trib.rb del-node host:port node_id
    • 修复集群
      redis-trib.rb fix host:port --timeout
      ---------------------------------------------------
      总之:
      redis-trib.rb help

    除了redis-trib.rb外,成功连接redis客户端后,也可使用cluster指令:

    • 查看集群节点信息
      cluster nodes
    • 进入一个从节点 redis,切换其主节点
      cluster replicate
    • 发现一个新节点,新增节点
      cluster meet ip:port
    • 忽略一个没有solt的节点
      cluster forget
    • 手动故障转移
      cluster failover

    3.3 集群数据的写入与获取

    6379、6380、6381为模拟master,6382、6383、6384为slave

    $ redis-cli
    127.0.0.1:6379 >set name 666
    (error)MOVED 5798 127.0.0.1:6380
    **注意此处提示key的存储位置在6380上
    
    $ redis-cli -c
    127.0.0.1:6379 >set name 666
    ->Redirected to slot [5798] located at 127.0.0.1:6380
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    $ redis-cli -c -p 6382
    127.0.0.1:6382 >get name 
    ->Redirected to slot [5798] located at 127.0.0.1:6380
    "666"
    
    • 1
    • 2
    • 3
    • 4

    注意-c参数的使用!

    3.4 节点故障模拟

    模拟主节点6379挂掉,并cluster nodes查看集群信息:

    在这里插入图片描述

    查看slave的控制台信息:

    在这里插入图片描述

    重新开启6379服务端,查看6382控制台日志:

    在这里插入图片描述
    cluster nodes查看集群信息:

    在这里插入图片描述

  • 相关阅读:
    基于Matlab的超像素图像分割
    【Redis 进阶】Redis 典型应用 —— 缓存(cache)
    关于线程池的常见问题
    YOLO目标检测数据集大全【含voc(xml)、coco(json)和yolo(txt)三种格式标签+划分脚本+训练教程】(持续更新建议收藏)
    阿里面试官浅聊Java面试那些事
    《大教堂与集市》读书笔记
    2023系统分析师---论需求分析方法及应用(内部消息)
    数据结构试题(四 )
    第二届黄河流域网络安全技能挑战赛Web_wirteup
    NodeRed Modbus学习一(配置Modsim32)
  • 原文地址:https://blog.csdn.net/llg___/article/details/126476279
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号