前言:

  前段时间我在centos上搭建过一次redis集群,那是借助ruby搭建,这次我介绍一种纯redis集群命令的方式去搭建【最后我会简单介绍ruby搭建】。

redis集群搭建(三主三备):

  准备工作:

    第一步:下载redis

      在这我用的是

    第二步:创建一个集群存放的目录 redis-cluster  .把下载好的redis  cp进去,然后修改配置文件。

      注意:windox版本的redis的配置文件  是  redis.windows-service.conf,下面我来进行改造一下,把每个实例文件夹下的redis.windows-service.conf   修改为 redis +端口.conf的形式。如图

           

      修改redis7771.conf文件:主要修改:

         

         

      修改好一个redis 后,再cp出来5份,分别叫redis 7772 | 7773 | 7774 | 7775 | 7776    如图:

        

    这些都修改好之后,我们的准备工作就算完成了。

  集群配置:

    第三步:启动7771 --7773 的三台redis作为集群的master节点。

      到指定redis文件夹下执行

        redis-server.exe redis7771.conf
        redis-server.exe redis7772.conf
        redis-server.exe redis7773.conf

      

    第四步:将redis实例添加到集群中: 【关于集群的命令后面我都会贴出来】

      启动7771的客户端:

        

      添加集群节点:主要是通过用cluster meet <host> <port>给集群添加节点,例如以下:  

              

        cluster nodes出现上面的3行记录就表示meet成功,标识myself的是client正在连接的redis实例。 能够通过cluster forget清除集群中的某个实例。

    第五步:分配卡槽  solts  (ruby  启动集群时候就会均分我们的卡槽,但是用redis命令启动集群不会)

      修改nodes-7771  ----  3  .conf文件

      

    修改好配置文件,重启redis,看看卡槽是否生效。(这个我配置好之后没重启也生效了,为了保险起见,建议重启一下)

      

    到这,主节点基本上配置好了。

    注意:如今存在这样一个问题:假设某个master节点挂掉的话,那么这个集群就不可用了,所以我们如今为集群中的3个master实例各启一个slave实例做主备。

   第六步:为每个master节点配置一个slave节点,做主备,当主节点宕机时,备节点自动切换上来。

        现在我们准备的7774--7776那是实例派上用场了,下面启动三个redis。

        

      在7771 上把这三个点加到集群中。

        

     最后用cluster replicate <nodeid>将7774、7775、7776 分别挂到7771、7772、7773上:

        

  到这,三主三备就搭建好了,当主节点宕机时,从节点就会变成主节点对外服务。测试一下。关闭7772后  7775就应该变成主节点。如图:

      

cluster 命令: 

## 集群(cluster)
cluster info 打印集群的信息
cluster nodes 列出集群当前已知的全部节点(node)。以及这些节点的相关信息。
## 节点(node)
cluster meet <ip> <port> 将 ip 和 port 所指定的节点加入到集群其中。让它成为集群的一份子。
cluster forget <node_id> 从集群中移除 node_id 指定的节点。
cluster replicate <node_id> 将当前节点设置为 node_id 指定的节点的从节点。
cluster SAVECONFIG 将节点的配置文件保存到硬盘里面。
## 槽(slot)
cluster ADDSLOTS <slot> [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点。
cluster DELSLOTS <slot> [slot ...] 移除一个或多个槽对当前节点的指派。
cluster FLUSHSLOTS 移除指派给当前节点的全部槽,让当前节点变成一个没有指派不论什么槽的节点。
cluster SETSLOT <slot> NODE <node_id> 将槽 slot 指派给 node_id 指定的节点,假设槽已经指派给还有一个节点。那么先让还有一个节点删除该槽>,然后再进行指派。
cluster SETSLOT <slot> MIGRATING <node_id> 将本节点的槽 slot 迁移到 node_id 指定的节点中。
cluster SETSLOT <slot> IMPORTING <node_id> 从 node_id 指定的节点中导入槽 slot 到本节点。
cluster SETSLOT <slot> STABLE 取消对槽 slot 的导入(import)或者迁移(migrate)。
## 键(key)
cluster KEYSLOT <key> 计算键 key 应该被放置在哪个槽上。
cluster COUNTKEYSINSLOT <slot> 返回槽 slot 眼下包括的键值对数量。
cluster GETKEYSINSLOT <slot> <count> 返回 count 个 slot 槽中的键

redis集群升级:

   上面那些介绍的是redis集群的搭建,一步一步成功的,但是上面每次都要启动服务的命令是不是很不爽,为啥我不把它做成window服务,让他们随系统自启动呢。linux也可以做成自启动的哦。单节点的redis做成自启动可以参考 window下把redis发布成服务

  下面我介绍:把启动命令做成服务:

    

# 发布成服务(这些命令要到各redis文件夹下去执行。如果大家嫌麻烦,可以使用绝对路径,在命令行就都干了)
redis-server.exe --service-install redis7771.conf --service-name redis7771
redis-server.exe --service-install redis7772.conf --service-name redis7772
redis-server.exe --service-install redis7773.conf --service-name redis7773
redis-server.exe --service-install redis7774.conf --service-name redis7774
redis-server.exe --service-install redis7775.conf --service-name redis7775
redis-server.exe --service-install redis7776.conf --service-name redis7776

#服务启动
redis-server.exe --service-start --service-name redis7771
redis-server.exe --service-start --service-name redis7772
redis-server.exe --service-start --service-name redis7773
redis-server.exe --service-start --service-name redis7774
redis-server.exe --service-start --service-name redis7775
redis-server.exe --service-start --service-name redis7776

# 停止服务
redis-server.exe --service-stop --service-name redis7771
redis-server.exe --service-stop --service-name redis7772
redis-server.exe --service-stop --service-name redis7773
redis-server.exe --service-stop --service-name redis7774
redis-server.exe --service-stop --service-name redis7775
redis-server.exe --service-stop --service-name redis7776

# 删除服务
redis-server.exe --service-uninstall --service-name redis7771
redis-server.exe --service-uninstall --service-name redis7772
redis-server.exe --service-uninstall --service-name redis7773
redis-server.exe --service-uninstall --service-name redis7774
redis-server.exe --service-uninstall --service-name redis7775
redis-server.exe --service-uninstall --service-name redis7776

  就这样,以后频繁的启动redis服务就可以在window服务中进行了。不用再去敲命令了


ruby安装:

  

2.下载并安装ruby

  2.1. 下载路径如下:

  http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.2.4-x64.exe

下载后,双击安装即可,同样,为了操作方便,也是建议安装在盘符根目录下,如: C:\Ruby22-x64 ,安装时这里选中后两个选项,

意思是将ruby添加到系统的环境变量中,在cmd命令中能直接使用ruby的命令

2.2.下载ruby环境下Redis的驱动,考虑到兼容性,这里下载的是3.2.2版本

  https://rubygems.org/gems/redis/versions/3.2.2

注意:下载在页面右下角相关连接一项中

安装该驱动,命令如下:

gem install --local path_to_gem/filename.gem  

实际操作如下:

2.3.下载Redis官方提供的创建Redis集群的ruby脚本文件redis-trib.rb,路径如下:

    https://raw.githubusercontent.com/MSOpenTech/redis/3.0/src/redis-trib.rb

打开该链接如果没有下载,而是打开一个页面,那么将该页面保存为redis-trib.rb

建议保存到Redis的目录下。

  注意:因为redis-trib.rb是ruby代码,必须用ruby来打开,若redis-trib.rb无法识别,需要手动选择该文件的打开方式:


我搭建的redis-cluster的文件夹,也分享给大家: 链接:https://pan.baidu.com/s/1fHYkiSW1xYh9eRYZBWuSaQ 密码:ni7z    这里面的文件只是到上述的准备工作,集群的配置都被我删除了。不会的可以跟着上述步骤再走一遍就会了

  

redis介绍 (8) window 下redis的集群(cluster命令)的更多相关文章

  1. Redis源码阅读(六)集群-故障迁移(下)

    Redis源码阅读(六)集群-故障迁移(下) 最近私人的事情比较多,没有抽出时间来整理博客.书接上文,上一篇里总结了Redis故障迁移的几个关键点,以及Redis中故障检测的实现.本篇主要介绍集群检测 ...

  2. redis单点、redis主从、redis哨兵sentinel,redis集群cluster配置搭建与使用

    目录 redis单点.redis主从.redis哨兵 sentinel,redis集群cluster配置搭建与使用 1 .redis 安装及配置 1.1 redis 单点 1.1.2 在命令窗口操作r ...

  3. Redis源码阅读(五)集群-故障迁移(上)

    Redis源码阅读(五)集群-故障迁移(上) 故障迁移是集群非常重要的功能:直白的说就是在集群中部分节点失效时,能将失效节点负责的键值对迁移到其他节点上,从而保证整个集群系统在部分节点失效后没有丢失数 ...

  4. Redis源码阅读(四)集群-请求分配

    Redis源码阅读(四)集群-请求分配 集群搭建好之后,用户发送的命令请求可以被分配到不同的节点去处理.那Redis对命令请求分配的依据是什么?如果节点数量有变动,命令又是如何重新分配的,重分配的过程 ...

  5. Redis源码阅读(三)集群-连接初始化

    Redis源码阅读(三)集群-连接建立 对于并发请求很高的生产环境,单个Redis满足不了性能要求,通常都会配置Redis集群来提高服务性能.3.0之后的Redis支持了集群模式. Redis官方提供 ...

  6. Redis(9)——史上最强【集群】入门实践教程

    一.Redis 集群概述 Redis 主从复制 到 目前 为止,我们所学习的 Redis 都是 单机版 的,这也就意味着一旦我们所依赖的 Redis 服务宕机了,我们的主流程也会受到一定的影响,这当然 ...

  7. Docker快速构建Redis集群(cluster)

    Docker快速构建Redis集群(cluster) 以所有redis实例运行在同一台宿主机上为例子 搭建步骤 redis集群目录清单 . ├── Dockerfile ├── make_master ...

  8. redis集群cluster简单设置

    环境: 这里参考官方使用一台服务器:Centos 7  redis-5.0.4    192.168.10.10 redis集群cluster最少要3个主节点,所以本次需要创建6个实例:3个主节点,3 ...

  9. Redis集群-Cluster模式

    我理解的此模式与哨兵模式根本区别: 哨兵模式采用主从复制模式,主和从数据都是一致的.全量数据: Cluster模式采用数据分片存储,对每个 key 计算 CRC16 值,然后对 16384 取模,可以 ...

随机推荐

  1. 干货—MySQL常见的面试题+索引原理分析!

    目录 MySQL索引的本质 MySQL索引的底层原理 MySQL索引的实战经验 面试 问:数据库中最常见的慢查询优化方式是什么? 同学A:加索引. 问:为什么加索引能优化慢查询? 同学A:...不知道 ...

  2. AB(ApacheBench)工具 -- 压力测试

    服务器负载太大而影响程序效率也是很常见的,Apache服务器自带有一个叫AB(ApacheBench)的工具,可以对服务器进行负载测试 同时美多商城的秒杀功能也会被高负载影响,从而导致超卖现象 安装x ...

  3. python算法博客推荐

    http://www.cnblogs.com/feixuelove1009/p/6143539.html https://www.cnblogs.com/feixuelove1009/p/614835 ...

  4. Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005 拒绝访问

    异常信息:Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046 ...

  5. 【转】使用notepad运行python

    Notepad++是一个开源的文本编辑器,功能强大而且使用方便,一般情况下,Notepad++作为代码查看器,很方便,但是每次要运行的时候,总是需要用右键打开其他的IDE来编译和运行,总有些不方便.特 ...

  6. 经济学人使用Golang构建微服务历程回顾

    关键点 经济学人内容分发系统需要更大的灵活性,将内容传递给日益多样化的数字渠道.为了实现这一灵活性目标并保持高水平的性能和可靠性,平台从一个单体结构过渡到微服务体系结构. 用Go编写的服务是新系统的一 ...

  7. 【微收藏】FourShadows.js – 时间感知的算法驱动的图标阴影JS库

    废话一箩筐,筐筐有心得 不小心养成了一个刷微博的习惯,主要还是关注一些前端人士,学习一些前端方面的知识,看到大家都有一些刷微博的小习惯.有的是转发一下,转发内容来一个标记(MARK).也有评论中标记为 ...

  8. Django组件之cookie与session

    一.引子 http协议是无状态的,就是它不会记录请求和响应的任何信息,比如你访问一个服务器的一个网页时,先要你登录一下,然后进入网页,但当你要进入这个服务器的另一个网页时,它照常不会知道刚才你已经登录 ...

  9. Topshelf 学习 跨平台【转载】

    Topshelf 学习 跨平台   Topshelf是一个开源的跨平台的宿主服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务宿主. 官网:http://topshe ...

  10. PowerDesigner反向生成物理数据模型

    什么是PowerDesigner Power Designer 是Sybase公司的CASE工具集,使用它可以方便地对管理信息系统进行分析设计,它几乎包括了数据库模型设计的全过程.利用Power De ...