码农知识堂 - 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查看集群信息:

    在这里插入图片描述

  • 相关阅读:
    两个版本cuda,如何指定cuda版本教程步骤附带cuda时提示空间不足“Not enough space on parition mounted at /”
    C语言:简单的用二维数组打印杨氏三角
    CTFshow web(文件上传158-161)
    「Python循环结构」利用while循环求1~n的平方和
    Building a Robust Data Infrastructure for Cloud Computing Platforms
    手把手教你maven的安装与配置(windows)
    贪心算法-----------------装箱问题
    2023年10月wxid转微信号方法
    一文搞懂js中的typeof用法
    计算机里的公共汽车(总线)
  • 原文地址:https://blog.csdn.net/llg___/article/details/126476279
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号