前言:

  Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。 Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。说了一大堆,简单的来说,redis就是为关系型数据库提供缓存与缓冲,增强MYSQL/ORACLE等关系型数据库,提高整个数据库系统的整体性能。

一、实验相关信息:

redis版本:redis-5.0.3.tar.gz
操作系统:完全新安装的centos7.6系统
使用一台虚拟机模拟6个redis节点,3个master,3个slave,虚拟机IP为192.168.220.11
和使用不同的IP创建集群基本过程一致,为了方便,就不创建多个虚拟机了。
 
二、搭建过程:
开始搭建:
    yum install -y wget gcc
systemctl stop firewalld.service
systemctl disable firewalld.service
cd /opt
wget http://download.redis.io/releases/redis-5.0.3.tar.gz
tar zxvf redis-5.0.3.tar.gz
mv redis-5.0.3 redis
cd redis

解压后目录结构如下:

编译安装:

    make MALLOC=libc
make install

src目录包含了redis server和redis cli的相关命令脚本,将该路径加入到PATH环境变量当中,方便使用

    cd /opt/redis
mkdir cluster # 创建redis实例根目录
cd cluster
mkdir 7001 # 创建具体redis实例相关目录,指定其端口号为7001
cd 7001
cp /opt/redis/redis.conf . #复制配置文件,修改之后当作当前redis实例的启动配置
mkdir data # 创建数据存储目录
修改配置文件文件,最小化修改配置
下面为需要修改的配置项以及说明
port 7001 # 客户端连接端口
bind 192.168.220.11 #实例绑定的IP地址
dir /opt/redis/cluster/7001/data # redis实例数据配置存储位置
daemonize yes # 是否以后台进程的方式启动redis实例
pidfile pidfile /var/run/redis_7001.pid # 指定该进程pidfile
cluster-enabled yes # 开启集群模式
cluster-config-file # 集群中该实例的配置文件,该文件会在data目录下生成
appendonly yes # 开启aop日志
protected-mode no # 关闭保护模式
requirepass cyclone # master开启密码保护
masterauth cyclone # replica同master交互密码 接下来按照同样的方式创建7002,7003,7004,7005,7006的文件夹,修改配置文件 依次启动redis实例
redis-server /opt/redis/cluster/7001/redis.conf
redis-server /opt/redis/cluster/7002/redis.conf
redis-server /opt/redis/cluster/7003/redis.conf
redis-server /opt/redis/cluster/7004/redis.conf
redis-server /opt/redis/cluster/7005/redis.conf
redis-server /opt/redis/cluster/7006/redis.conf
查看启动结果

集群的创建,将redis实例联系起来,创建一个集群
redis-cli -a cyclone --cluster create --cluster-replicas 1 192.168.220.11:7001 192.168.220.11:7002 192.168.220.11:7003 192.168.220.11:7004 192.168.220.11:7005 192.168.220.11:7006
输出如下:

一些slave和master在相同的物理主机上,所以会出现一些警告,这个不影响。
连接到集群的某个节点:

redis-cli -a cyclone -c -h 192.168.220.11 -p 7001

查看集群相关信息:

查看集群节点信息:

三、集群相关操作:

1.关闭集群的某个节点,比如关闭端口号为7001的实例:

redis-cli -a cyclone -c -h 192.168.220.11 -p 7001 shutdown
查看结果

关闭之后,使用redis-server /opt/redis/cluster/7001/redis.conf命令可以将实例重新启动,启动完成之后,自动加入到集群当中

2.集群的关闭

逐个关闭redis实例进程即可
查找redis实例进程号

    ps -ef | grep redis

关闭redis进程,使用kill -9 ${进程号},如果需要关闭多个进程,进程号之间空格隔开即可

kill -9 10252 10257 10262 10267 10272 10294

也可执行以下命令来关闭redis进程

pkill -9 redis

3.redis集群的重新启动

保留原来的数据:
逐个关闭redis实例,再逐个的启动即可。

 
丢弃原来的数据:
关闭实例,清空实例中数据存放目录的所有内容,然后逐个启动实例,在任意一个实例上执行集群的创建命令即可,本质上就是创建一个新的集群
清空数据存储目录内容:
   rm -rf /opt/redis/cluster/7001/data/*
rm -rf /opt/redis/cluster/7002/data/*
rm -rf /opt/redis/cluster/7003/data/*
rm -rf /opt/redis/cluster/7004/data/*
rm -rf /opt/redis/cluster/7005/data/*
rm -rf /opt/redis/cluster/7006/data/*

启动实例:

  redis-server /opt/redis/cluster/7001/redis.conf
redis-server /opt/redis/cluster/7002/redis.conf
redis-server /opt/redis/cluster/7003/redis.conf
redis-server /opt/redis/cluster/7004/redis.conf
redis-server /opt/redis/cluster/7005/redis.conf
redis-server /opt/redis/cluster/7006/redis.conf

执行集群创建命令:

redis-cli -a cyclone --cluster create --cluster-replicas 1 192.168.220.11:7001 192.168.220.11:7002 192.168.220.11:7003 192.168.220.11:7004 192.168.220.11:7005 192.168.220.11:7006

redis cluster-cluster 命令手动管理redis集群

3、将 ip 和 port 所指定的节点添加到集群中

CLUSTER MEET <ip> <port>

4、从集群中移除 node_id 指定的节点

CLUSTER FORGET <node_id>

5、将当前节点设置为 node_id 指定的节点的从节点

CLUSTER REPLICATE <node_id>

6、将节点的配置文件保存到硬盘里面

CLUSTER SAVECONFIG

7、将一个或多个槽(slot)指派(assign)给当前节点

CLUSTER ADDSLOTS <slot> [slot ...]

8、移除一个或多个槽对当前节点的指派

CLUSTER DELSLOTS <slot> [slot ...]

9、 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点

CLUSTER FLUSHSLOTS

10、将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派

CLUSTER SETSLOT <slot> NODE <node_id>

11、将本节点的槽 slot 迁移到 node_id 指定的节点中

CLUSTER SETSLOT <slot> MIGRATING <node_id>

12、从 node_id 指定的节点中导入槽 slot 到本节点

CLUSTER SETSLOT <slot> IMPORTING <node_id>

13、取消对槽 slot 的导入(import)或者迁移(migrate)

CLUSTER SETSLOT <slot> STABLE

14、计算键 key 应该被放置在哪个槽上

CLUSTER KEYSLOT <key>

15、返回槽 slot 目前包含的键值对数量

CLUSTER COUNTKEYSINSLOT <slot>

16、返回 count 个 slot 槽中的键

CLUSTER GETKEYSINSLOT <slot> <count> 

redis集群搭建及常用操作的更多相关文章

  1. Redis 集群搭建详细指南

    先有鸡还是先有蛋? 最近有朋友问了一个问题,说毕业后去大城市还是小城市?去大公司还是小公司?我的回答都是大城市!大公司! 为什么这么说呢,你想一下,无论女孩男孩找朋友都喜欢找个子高胸大的.同样的道理嘛 ...

  2. 二、redis集群搭建

    redis集群搭建 redis3.0后支持集群.集群中应该至少有三个节点,每个节点有一备份节点.需要6台服务器.搭建伪分布式,需要6个redis实例.搭建集群的步骤: 一.安装单机版redis 第一步 ...

  3. redis集群搭建及注意事项

    上一篇:redis的安装及注意事项 这里,在一个Linux虚拟机上搭建6个节点的redis伪集群,思路很简单,一台虚拟机上开启6个redis实例,每个redis实例有自己的端口.这样的话,相当于模拟出 ...

  4. Linux Redis集群搭建与集群客户端实现(Python)

    硬件环境 本文适用的硬件环境如下 Linux版本:CentOS release 6.7 (Final) Redis版本: Redis已经成功安装,安装路径为/home/idata/yangfan/lo ...

  5. Linux Redis集群搭建与集群客户端实现

    硬件环境 本文适用的硬件环境如下 Linux版本:CentOS release 6.7 (Final) Redis版本: Redis已经成功安装,安装路径为/home/idata/yangfan/lo ...

  6. redis集群搭建及设置账户(转)

    Redis集群搭建以及为集群设置密码 介绍安装环境与版本 用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master.3 salve 环境. redis 采用 redis-3.2.4 版本. ...

  7. redis 集群搭建: redis-cluster

    前言 redis数据存储在内存中, 就会受到内存的限制, 大家都知道, 一台电脑, 硬盘可以有1T, 但是内存, 没有听说有1T的内存吧. 那如果数据非常多, 超过一台电脑的内存空间, 怎么办呢? 正 ...

  8. centos redis集群搭建

    说明: 10.0.0.111部署6500,6501,6502三个主节点 10.0.0.222部署6500,6501,6502三个备份节点 1.安装redis:略 2.配置内核参数 # 配置 vm.ov ...

  9. 分享知识-快乐自己:redis集群搭建

    Redis介绍: 1.开源的NoSql数据库 2.C语言编写 3.基于内存运行,并且支持持久化 4.Key value存储 5.是主流的Nosql数据库之一 Redis优点: 1.内存使用方面,表现优 ...

随机推荐

  1. Chapter 02—Creating a dataset(Part2)

    三. 导入数据 图02-03:Source of data that can be imported into a dataset 11. 从键盘导入数据 (1)可能是最简单的数据导入方式. (2)使 ...

  2. python小知识课堂

    啦啦啦 with上下文管理 __class__和type的关系

  3. C语言|博客作业10

    问题 回答 C语言 博客作业10 这个作业要求在哪里 作业要求 我在这个课程的目标是 熟练循环语句的用法 这个作业在哪个具体方面帮助我实现目标 pta作业 参考文献 <C语言程序设计> 1 ...

  4. 华为参与《基于5G技术的医院网络建设标准》的制定

    [摘要] 5G 千兆网承载五地远程会诊,现场完成三例复杂性疑难重症远程病例讨论 [中国,北京,2019年9月4日] 金秋之际,在国家卫生健康委指导下,由中日友好医院•国家远程医疗与互联网医学中心•国家 ...

  5. 关于CSS选择器连续性的问题

    在html中有以下结构: --- ----- <div class="row100"> <div class="col"> <di ...

  6. Chrome快捷键吐血整理

    Chrom是平时开发过程中最常用到的浏览器,使用快捷键操作Chrome能提高我们的使用效率,而且可以脱离鼠标进行操作.本篇博客就对平时我们常用的Chrome快捷键做一个整理总结.大家拿走不谢,哈哈~~ ...

  7. js 实现 多层级对象合并

    js 实现 多层级对象合并 首先 需求是使用js对数据的格式进行转换 把一个二维数组(包含层级信息,层级数是不固定的)list 转换为多层级的对象 我的思路就是 循环先把list里单条信息转换为 多层 ...

  8. HihoCoder 1398 网络流 - 最大权闭合子图

    周末,小Hi和小Ho所在的班级决定举行一些班级建设活动. 根据周内的调查结果,小Hi和小Ho一共列出了N项不同的活动(编号1..N),第i项活动能够产生a[i]的活跃值. 班级一共有M名学生(编号1. ...

  9. ThreadLocal的进化——TransmittableThreadLocal

    上一篇文章中,我们谈到了 InheritableThreadLocal,它解决了 ThreadLocal 针对父子线程无法共享上下文的问题.但我们可能听说过阿里的开源产品TransmittableTh ...

  10. iSensor APP 之 摄像头调试 OV9655 测试之二

    参考上一篇博客 iSensor APP 之 摄像头调试 OV9655 本次链接主要介绍,使用ov9655输出QVGA格式,320*240  YUV输出,图像效果还不错,用户可以参考此模板改变分辨率,不 ...