redis-cli创建redis集群的实现

 更新时间:2024年06月17日 11:37:56   作者:余生逆风飞翔  
本文主要介绍了redis-cli创建redis集群的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、redis单节点部署

创建文件用service启动redis方式

创建如下文件

vi /etc/systemd/system/redis.service

写入内容如下:

[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
#使用时更改redies-server的目录地址,更改redis.conf配置文件的地址
ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target

重启配置使用上述文件生效

systemctl daemon-reload

二、redis集群部署

注:以下ruby环境和命令只适用于5.0(不包括)以前版本,5.0以上版本请跳过7.1之前步骤

  • redis-trib.rb是在redis3.x版本时所用的一种部署redis集群的工具,redis-cli是redis5.x及更高版本所支持创建集群的工具,在redis3.x版本时redis-cli只是一个客户端连接管理工具。
  • redis-cli比redis-trib.rb多了一个可以认证集群密码的功能,后者创建的集群不能对有密码的集群节点进行很好的管理,所以后来官方直接废弃了这个工具。
  • 用redis-trib.rb创建集群之前需要配置ruby环境,新版本的redis-cli可以直接创建集群环境而不用配置ruby环境

集群架构

  • redis 集群至少需要3个 master 实例
  • master 可以带0个或者多个 slave
  • Master之间的数据并不同步,而是各自存放各自的数据
  • 所有的 master 按照接近1:1的比例分配16384个槽,意味着集群最多有 16384个master 但是在实际中推荐最大的
    master 节点数不超过1000个。
  • slave不分配槽
  • 整个集群中的数据是以分布式的方式存储的,在存储或者获取的时候先对 key进行hash运算,看看该 key落在那个槽上,从而确定该 key
    应该在那个节点存取
  • Key 值落在哪一个槽上,只取决于 key 值本身,这个算法是固定的。

部署环境

版本:6.2.11
节点数量:redis-master-3节点
redis-selve-3节点

1.先安装依赖文件

yum -y install gcc tcl

2.解压redis包并执行如下命令

tar xf /home/redis-6.2.11.tar.gz
cd /home/redis-6.2.11
make

3.需要更改的参数

#端口,各自端口不同
port 637*
#后台启动
daemonize yes
#密码,集群的密码都要相同
masterauth 123456
#开启集群
cluster-enabled yes
#绑定本机Ip地址
bind 0.0.0.0
#更改密码,所有节点均纹统一密码,此为认证密码,单节点登录使用
requirepass 123456
#各节点集群配置文件
cluster-config-file node-63**.conf

4.安装ruby环境及依赖

yum -y install ruby ruby-devel rubygems

5.安装ruby环境

备注:redis-trib.rb这个二进制文件,用来构建redis集群,要用到ruby环境
补充:报错问题:“redis requires Ruby version >= 2.2.2”为ruby版本太低造成

#会在/etc/yum.repos.d/目录下多出一个CentOS-SCLo-scl-rh.repo源3
yum install centos-release-scl-rh
#直接yum安装即可
yum install rh-ruby25  -y      
#必要一步
scl  enable  rh-ruby25 bash    
#查看安装版本redis-trib.rb这个二进制文件就可以使用了,用来构建redis集群
ruby -v
#安装redis接口
gem install redis

6.设置环境变量

备注:如果不设置环境变量的话,重启节点后ruby就找不到了

#使用export命令显示所有环境变量,复制后添加到/etc/profile文件中
export
export PATH=/bin:/usr/bin:/sbin:$PATH
#保存退出后使用命令source使用配置生效
source /etc/profile

7.集群创建

1.redis-trib.rb模式启动集群

#需要要先修改redis-trib.rb的密码与集群相同
#过滤出client.rb文件路径
find / -name "client.rb"
#修改client.rb文件中的密码
默认为空修改为集群密码
#执行如下命令启动集群
/home/redis-6.2.11/src/redis-trib.rb create --replicas 1 192.168.95.133:6349 192.168.95.134:6378 192.168.95.135:6379 192.168.95.139:6375 192.168.95.137:6376 192.168.95.138:6377

在这里插入图片描述

2. 5.0以上版本 

#4.0以上的版本用如下命令启动集群-a指定集群密码
./redis-cli --cluster create 192.168.95.133:6349 192.168.95.134:6378 192.168.95.135:6379 192.168.95.139:6375 192.168.95.137:6376 192.168.95.138:6377 --cluster-replicas 1 -a '123456'

8.查看节点

#连接任意节点IP,-c是连接集群模式
./src/redis-cli -h 192.168.95.139 -p 6375 -c
#输入密码
auth ****
#查看节点
cluster nodes

9.停止集群

各节点停止redis后即可停止集群

10.增删节点(此命令针对的是主节点)

#增加节点需要登录集群任何节点
cluster meet IP 端口
#删除节点,ID号在nodes文件中
cluster forget 节点ID

11.增删从节点

#增加从节点时,登录哪个节点即为从节点
cluster replicate 节点id #此ID必须在集群中已记录,即在nodes-**上记录后才能添加,否则会报错
#重置当前节点的配置信息,该名会重置rodes-port.conf 文件为初始状态
cluster rest

问题记录

解决办法:删除redis目录下的nodes*后重启redis所有节点

在这里插入图片描述

解决办法:登录时要加-c参数以集群方式登录

在这里插入图片描述

试验结论:

经过多次试验杀掉其中某一个主节点,集群会自动切换新的master,宕机节点恢复后会主动加入集群

到此这篇关于redis-cli创建redis集群的实现的文章就介绍到这了,更多相关redis-cli创建redis集群内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • redis通过位图法记录在线用户的状态详解

    redis通过位图法记录在线用户的状态详解

    这篇文章主要给大家介绍了关于redis如何通过位图法记录在线用户的状态的相关资料,文中先对位图进行了一个简单的介绍,而后通过示例代码将实现的方法介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • Redis不是一直号称单线程效率也很高吗,为什么又采用多线程了?

    Redis不是一直号称单线程效率也很高吗,为什么又采用多线程了?

    这篇文章主要介绍了Redis不是一直号称单线程效率也很高吗,为什么又采用多线程了的相关资料,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Redis如何从海量key中查询出某一固定前缀的key

    Redis如何从海量key中查询出某一固定前缀的key

    当Redis存储一亿key时,使用keys指令可能因返回全部key导致服务器卡顿,而scan指令通过游标分批获取,避免阻塞,适合生产环境,需注意重复结果可用hashSet去重,count参数可调整返回数量但非强制
    2025-07-07
  • 浅谈redis内存数据的持久化方式

    浅谈redis内存数据的持久化方式

    这篇文章主要介绍了浅谈redis内存数据的持久化方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Redis分布式锁方案设计之防止订单重复提交或支付

    Redis分布式锁方案设计之防止订单重复提交或支付

    这篇文章主要为大家介绍了Redis分布式锁之防止订单重复提交或支付方案设计示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Redis HyperLogLog数据量统计的实现实例

    Redis HyperLogLog数据量统计的实现实例

    在大数据时代,统计海量数据中的唯一值是一个常见的需求,但同时也是极具挑战性的任务,传统的统计方法可能会消耗大量内存或计算资源,而 Redis 的 HyperLogLog 数据结构 则提供了一种高效、轻量的解决方案,下面就来详细介绍一下HyperLogLog的使用,感兴趣的可以了解一下
    2025-09-09
  • 详解Redis单线程的正确理解

    详解Redis单线程的正确理解

    这篇文章主要介绍了详解Redis单线程的正确理解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • Redis数据存储原理和结构解读

    Redis数据存储原理和结构解读

    这篇文章详细介绍了Redis的数据结构和过期机制,包括键值对存储、哈希表、字典、跳表等,并探讨了大Key问题和解决方法
    2026-03-03
  • Redis源码分析之set 和 sorted set 使用

    Redis源码分析之set 和 sorted set 使用

    本文介绍了Redis 中的 set 和 sorted set 使用源码实现分析,Redis 的 Set 是 String 类型的无序集合,集合成员是唯一的,sorted set有序集合和集合一样也是 string 类型元素的集合,对Redis set 和 sorted set使用相关知识感兴趣的朋友一起看看吧
    2022-03-03
  • 浅析Redis 切片集群的数据倾斜问题

    浅析Redis 切片集群的数据倾斜问题

    如果 Redis 中的部署,采用的是切片集群,数据是会按照一定的规则分散到不同的实例中保存,比如,使用 Redis Cluster 或 Codis,这篇文章主要介绍了Redis 切片集群的数据倾斜分析,需要的朋友可以参考下
    2022-06-06

最新评论