当前位置: 首页 > news >正文

Redis_分片集群

10. 分片集群

10.1简介

业务场景,需要存储50G的数据。对于内存和硬盘配置不足,选用两种方式

  • 一种:纵向扩展:加内存,加硬盘,提高CPU。简单、直接。RDB存储效率要考虑。成本要考虑。
  • 二种:横向扩展:加实例。(加机器)

10.2配置

步骤1:

  • 创建一个mycluster目录,复制redis.conf文件
    mkdir mycluster
    cp /opt/redis-6.2.6/redis.conf redis.conf
    
  • 将后台启动打开

步骤2:

  • 创建一个redis6379.conf
    include redis.conf
    pidfile "/var/run/redis_6379.pid"
    port 6379
    dbfilename "dump6379.rdb"
    #打开集群模式
    cluster-enabled yes
    #设定节点配置文件
    cluster-config-file nodes-6379.conf
    #设定节点失联时间,超过,会自动进行主从切换
    cluster-node-timeout 15000
    

步骤3:

  • 根据6379的配置文件,再配置5个不同的端口
    :%S/原内容/要替换的内容
    :%s/6379/6380
    

步骤4:

  • 修改redis.conf配置文件,将bind ip地址加入
    在这里插入图片描述

    打开bind 127.0.0.1
    加入 192.168.188.3
    

步骤5

  • 启动六个服务,保证六个服务启动成功

步骤6

  • 将六个服务合成一个集群
    redis-cli --cluster create --cluster-replicas 1 192.168.188.3:6379
    192.168.188.3:6380 192.168.188.3:6381 192.168.188.3:6579 192.168.188.3:6580
    192.168.188.3:6581
    
  • 输入yes去接受配置

注意:
在这里插入图片描述
当出现此错误时,需要把redis.conf配置文件中的protected-mode no yes改为no,重启所有redis在执行步骤6
在这里插入图片描述

10.3 Hash Slot

10.3.1 简介

在使用redis cluster方案中,一个分片集群有16384个哈希槽。
根据键值对的key,按照CRC16算法计算一个16bit的值。再用这个值对16384取模运算,得到的数代表对应编号的hash slot

10.3.2部署方案

cluster create命令创建集群时,redis会自动把这些hash slot平均分布在集群实例上。如果集群中有N个实例(主库),每个实例上分配到的hash slot就是16384/N

使用cluster addslos 手工分配哈希槽。

10.4 集群中的数据操作

步骤1

  • 使用集群方式启动redis的命令行,加 -c参数
    redis-cli -c -p 6379
    

步骤2

  • 向redis中设置一个键值对,key会经过运算后,得到相应的hash slot进行存储
    set k1 v1
    set k2 v2
    get k1
    get k2
    

步骤3

  • 测试向集群中加入多个key-value,由于在不同的hash slot,此时会报错
    mset k3 v3 k4 v4 k5 v5
    
  • 要通过{}来定义组的概念,使用key中{}内相同内容的键值对放在一个slot中
mset name{user:001} zhangsan age{user:001} 18 gender{user:001} man

步骤4

  • 获取key中的值
    get k1
    get name{user:001}
    

10.5 常用命令

  • cluster nodes:显示集群节点的配置信息
  • cluster keyslot < key>:获取key的哈希槽
  • cluster countkeysinslot < slot>:返回当前哈希槽中key的数量(仅查询当前redis实例)
  • cluster getkeysinslot < slot>< count>:返回当前槽中指定的count数量的key

10.6 故障演示

步骤1

  • 将6379宕机,以集群方式登录6380
    127.0.0.1:6379>shutdown
    exit
    redis-cli -c -p 6380
    

步骤2:

  • 使用cluster nodes查看节点状态,6379的从机6581变成了主机

步骤3:

  • 把6379再次启动,启动后,6379变成了6581的从机

如果有一段hash slot的主从节点都宕机,redis是否继续工作?

通过下面配置,默认是yes,如果主从都挂掉,整个集群就都挂掉

如果是no,就表示该hash slot数据全部都不能使用,也无法存储

cluster-require-full-coverage yes
http://www.lryc.cn/news/120153.html

相关文章:

  • 测试提升方向:你选测试开发?还是性能测试?
  • 无涯教程-Perl - print函数
  • python搜索文件夹内类似的文件名
  • [保研/考研机试] KY3 约数的个数 清华大学复试上机题 C++实现
  • cmake扩展(2)——windows下动态设置输出文件(dll/exe)版本
  • Python-OpenCV中的图像处理-颜色空间转换
  • yolov5目标检测多线程Qt界面
  • [ubuntu]创建root权限的用户 该用户登录后自动切换为root用户
  • 大连交通大学813软件工程考研习题
  • 分布式协议与算法——Paxos算法
  • Spring中的Websocket身份验证和授权
  • 【果树农药喷洒机器人】Part7:静态PWM变量喷药实验
  • C++ 网络编程项目fastDFS分布是文件系统(一)
  • PoseiSwap 开启“Poseidon”池,治理体系或将全面开启
  • 【C/C++】重载运算符特性
  • HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
  • 24届近3年南京信息工程大学自动化考研院校分析
  • 【LeetCode】1572.矩阵对角线元素的和
  • 2023-08-08 Ubuntu 挂载U盘 fdisk -l 、sudo mount /dev/sdb1 /mnt/mydisk
  • make/makefile/cmake/nmake
  • 实用的开源应用全新开源源码Vue3+TS的前后台分离的开发平台源码开源技术社区平台
  • C++复习笔记——primer第五版
  • ElasticSearch:项目实战(2)
  • Eleastisearch5.2.2利用镜像迁移构建实例后ES非健康状态
  • sealos安装k8s
  • 经典贪吃蛇游戏 - 用 C 语言实现控制台版
  • 安灯Andon系统的应用与优势
  • 2023年的C++基础笔记
  • 综合能源系统(6)——综合能源综合评估技术
  • 华为OD机试真题 Java 实现【寻找相同子串】【2023 B卷 100分】,附详细解题思路