Redis集群操作的方法

Redis集群操作的方法

基于已有一定基础,这里搭建一个基础版本三主三从,架构如下

Redis集群操作的方法

1、启动集群

/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8001/redis.conf /usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8002/redis.conf /usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8003/redis.conf /usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8004/redis.conf /usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8005/redis.conf /usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8006/redis.conf

查看集群状态:cluster nodes

Redis集群操作的方法从上图可以看出,整个集群运行正常,三个master节点和三个slave节点,

  • 8001端口的实例节点存储0-5460这些hash槽,

  • 8002端口的实例节点存储5461-10922这些hash槽,

  • 8003端口的实例节点存储10923-16383这些hash槽,

这三个master节点存储的所有hash槽组成 redis集群的存储槽位,slave点是每个主节点的备份从节点,不显示存储槽位。

2、集群操作

我们在原始集群基础上再增加一主(8007)一从(8008),增加节点后的集群参见下图,新增节点用虚线框表示

Redis集群操作的方法

2.1、增加redis实例

在/usr/local/redis-cluster下创建8007和8008文件夹,并拷贝8001文件夹下的redis.conf文件到8007和8008这两个文件夹下

mkdir 8007 8008 cd 8001cp redis.conf /usr/local/redis‐cluster/8007/ cp redis.conf /usr/local/redis‐cluster/8008/ # 修改8007文件夹下的redis.conf配置文件vim /usr/local/redis‐cluster/8007/redis.conf # 修改如下内容:port:8007 dir /usr/local/redis‐cluster/8007/cluster‐config‐file nodes‐8007.conf # 修改8008文件夹下的redis.conf配置文件vim /usr/local/redis‐cluster/8008/redis.conf# 修改内容如下:port:8008dir /usr/local/redis‐cluster/8008/cluster‐config‐file nodes‐8008.conf# 启动8007和8008俩个服务并查看服务状态/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8007/redis.conf/usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8008/redis.confps ‐el | grep redis

2.2、配置8007为主节点

用add-node命令新增一个主节点8007(master),前面的ip:port为新增节点,后面的ip:port为已知存在节点,看到日志最后有”[OK] New node added correctly”提示代表新节点加入成功

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster add‐node 192.168.0.61:8007 192.168.0.61:8001

查看集群状态

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐c ‐h 192.168.0.61 ‐p 8001192.168.0.61:8001> cluster nodes

如下所示:

Redis集群操作的方法

注意:当添加节点成功以后,新增的节点不会有任何数据,因为它还没有分配任何的slot(hash槽),我们需要为新节点手工分配hash槽

使用redis-cli命令为8007分配hash槽,找到集群中的任意一个主节点,对其进行重新分片工作

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster reshard 192.168.0.61:8001

2.3、配置8008为8007的从节点

添加从节点8008到集群中去并查看集群状态

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster add‐node 192.168.0.61:8008 192.168.0.61:8001

如下:

Redis集群操作的方法

如图所示,还是一个master节点,没有被分配任何的hash槽。

原因:我们需要执行replicate命令来指定当前节点(从节点)的主节点id为哪个,首先需要连接新加的8008节点的客户端,然后使用集群命令进行操作,把当前的8008(slave)节点指定到一个主节点下(这里使用之前创建的8007主节点)

执行指令

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐c ‐h 192.168.0.61 ‐p 8008 192.168.0.61:8008> cluster replicate 2728a594a0498e98e4b83a537e19f9a0a3790f38 #后面这串id为8007的节点id

查看集群状态,8008节点已成功添加为8007节点的从节点

Redis集群操作的方法

2.4、删除8080从节点[不删除四主四从]

用del-node删除从节点8008,指定删除节点ip和端口,以及节点id(红色为8008节点id)

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster del‐node 192.168.0.61:8008 a1cfe35722d151cf70585cee212755653 93c0956

再次查看集群状态,如下图所示,8008这个slave节点已经移除,并且该节点的redis服务也已被停止

Redis集群操作的方法

2.5、删除8007主节点[不删除四主四从]

因为主节点的里面是有分配了hash槽的,所以我们这里必须先把8007里的hash槽放入到其他的可用主节点中去,然后再进行移除节点操作,不然会出现数据丢失问题(目前只能把master的数据迁移到一个节点上,暂时做不了平均分配功能),执行命令如下:

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster reshard 192.168.0.61:8007

迁移验证:会发现8007下面已经没有任何hash槽了,证明迁移成功!

Redis集群操作的方法

用del-node命令删除8007主节点即可

/usr/local/redis‐5.0.3/src/redis‐cli ‐a user ‐‐cluster del‐node 192.168.0.61:8007 2728a594a0498e98e4b83a537e19f9a0a 3790f38

查看最终集群状态,发现一切恢复如初,至此水平扩展结束

Redis集群操作的方法

“Redis集群操作的方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

文章标题:Redis集群操作的方法,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/27839

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年9月21日 上午12:16
下一篇 2022年9月21日 上午12:16

相关推荐

  • mysql如何删除数据库

    删除方法:1、使用“win+r”键打开“运行”窗口,输入“cmd”,回车进入cmd命令窗口;2、在cmd窗口中,执行“mysql -u root -p”命令登录MySQL服务器;3、执行“DROP DATABASE IF EXISTS 数据库名;”命令来删除指定数据库中的所有表并永久删除该数据库,“…

    2022年9月26日
    36100
  • mathtype下载后怎么在word使用

    mathtype下载后在word使用教程 1、首先我们下载并安装好mathtype。 2、然后打开word,就能够看到上方栏中的mathtype按钮了,点击即可使用。 3、如果word里没有,那么我们需要手动安装。进入mathtype的安装目录,找到“office support”文件夹。 4、根据…

    2022年9月15日
    8800
  • SQL字符串的合并与拆分实例代码分析

    字符串的合并 在Oracle中可能有多种实现方法,目前我已知的有两种,下面记录下这两种的实现: 字符串合并方法一: 实现SQL: –方法一SELECT d.dept_name,wm_concat(e.emp_name) FROM employee eINNER JOIN department d …

    2022年9月1日
    14200
  • MySQL在grant时报错ERROR 1064 (42000)如何解决

    网上查到的grant方式大多会报错,主要原因是MySQL版本8.0后不能再使用原来的方式 查询MySQL版本 SELECT version(); 在8.0版本下 grant all privileges on test.* to test@’%’ identified by ‘123456’; 报错…

    2022年8月27日
    52500
  • 怎么搭建配置Docker私有仓库

    ⛳️ 1.Docker容器三要素 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之…

    2022年9月18日
    25100
  • 如何实现Web日志分析

    1 、Web日志 Web访问日志记录了Web服务器接收处理请求及运行时错误等各种原始信息。通过对WEB日志进行的安全分析,不仅可以帮助我们定位攻击者,还可以帮助我们还原攻击路径,找到网站存在的安全漏洞并进行修复。 我们来看一条Apache的访问日志: 127.0.0.1 – – [11/Jun/20…

    2022年9月24日
    8900
  • 网络安全审计工具Nmap如何使用

    一.软件下载 https://nmap.org/download.html 二.扫描IP nmap 192.168.1.10 #扫描单IP nmap 192.168.1.10-100 #扫描IP段 nmap 192.168.1.10 192.168.1.11 #扫描单独的多IP nmap 192.1…

    2022年9月2日
    8300
  • 电脑蓝屏代码0x000009c如何解决

    解决方法: 方法一: 1、首先重启电脑,按住“F8”进入以下界面,然后进入“安全模式” 2、要是可以进入安全模式,就在其中将最近安装的驱动或软件全部卸载。 3、还有可能是因为系统中了病毒,所以可以尝试在安全模式中清理一下病毒。 4、如果进不去安全模式,那就是内存或硬件出现问题,就需要用下面的方法来解…

    2022年9月16日
    18800
  • win10系统怎么设置以管理员权限运行软件

    在我们使用win10系统的过程中,经常会遇到一些软件的权限问题,这时我们就需要以管理员身份才可以正常运行操作软件,但是有的用户发现我们的win10系统中没有以管理员权限运行软件的选项怎么办呢?   具体方法如下:   1、在桌面右击此电脑也就是我的电脑,选择“管理”;   2、展开至计算机管理 → …

    2022年9月8日
    28300
  • Swift的Mirror反射怎么使用

    元类型与.self AnyObject 在Swift开发中,我们经常会使用AnyObject来代表任意类的实例、类的类型、以及仅类遵守的协议。 代表任意类的实例、类的类型 class LGTeacher { var age = 18}var t = LGTeacher()var t1: AnyObj…

    2022年9月24日
    23000
联系我们
站长微信
站长微信
分享本页
返回顶部