Redis集群策略主要有:

  • 集群
  • 主从复制(在windows上搭建redis集群(主从复制))
  • 哨兵模式 (在windows上搭建redis集群(Redis-Sentinel))
  • 分片

本文主要讲解如何搭建分布式集群。

所需软件:

Redis 3.2

Ruby语言运行环境

Redis的Ruby驱动redis-xxxx.gem

创建Redis集群的工具redis-trib.rb

安装配置redis 

redis下载地址

https://github.com/MicrosoftArchive/redis/releases

1) 下载Redis-x64-3.2.100.zip。

**********************************************************************************************************************************************

要让集群正常运作至少需要3个主节点,建议配置3个主节点,其余3个作为各个主节点的从节点(也是官网推荐的模式)。

所以需要6台虚拟机。

主节点崩溃,从节点的Redis就会提升为主节点,代替原来的主节点工作,崩溃的主Redis恢复工作后,会再成为从节点。

**********************************************************************************************************************************************

2) 创建Redis集群目录

把 redis 解压后,再复制出 5 份,配置 三主三从集群。 由于 redis 默认端口号为 6379,那么其它5份的端口可以为6380,6381,6382,6383,6384。 并且把目录使用端口号命名

3) 修改配置文件

打开每个Redis目录下的文件 redis.windows.conf,修改里面的端口号分别对应相对应的文件夹名:6379、6380、6381、6382、6383、6384,

再修改集群支持配置,将以下配置前面的#去掉。

cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
appendonly yes

cluster-config-file nodes-6379.conf 是为该节点的配置信息,这里使用 nodes-端口.conf命名方法。服务启动后会在目录生成该文件。

4) 编写启动脚本,或者进入每个端口命名的文件夹下启动服务

编写一个 bat 来启动 redis,在每个节点目录下建立 startup.bat,内容如下:
title redis-6379
redis-server.exe redis.windows.conf

title命名规则 redis-相对应的端口。

安装Ruby

redis的集群使用  ruby脚本编写,所以系统需要有 Ruby 环境 ,下载地址

https://rubyinstaller.org/downloads/

安装时3个选项都勾选。

安装RedisRuby驱动redis-xxxx.gem

下载地址 https://rubygems.org/pages/download

下载后解压,当前目录切换到解压目录中,如 D:\Program Files\Redis_cluster\rubygems-2.7.7 然后命令行执行  ruby setup.rb

再用 GEM 安装 Redis :切换到redis安装目录,需要在命令行中,执行 gem install redis

安装集群脚本redis-trib

下载地址  https://raw.githubusercontent.com/antirez/redis/unstable/src/redis-trib.rb

打开该链接把里面的脚本保存为redis-trib.rb,建议保存到一个Redis的目录下(不用每个都放),例如放到6379目录下。

注意:现在打开这个链接中的代码已不支持redis 5.0以下的版本了,需要下载老版本的

脚本,链接:

https://download.csdn.net/download/weixin_41846320/10760378

redis-trib.rb集群的命令为

redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384

--replicas 1 表示每个主数据库拥有从数据库个数为1。master节点不能少于3个,所以我们用了6个redis

 启动每个节点并且执行集群构建脚本

把每个节点下的 start.bat双击启动, 在切换到redis目录在命令行中执行

redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384
这个命令只需输入一次就好了,之后节点关闭,重启就不需要再执行了

注意:如果出现 redis-trib.rb is not longer available!  如果redis版本是5.0以上,则使用如下命令:

redis-cli --cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 12

1:6382 127.0.0.1:6383 127.0.0.1:6384 --cluster-replicas 1

原因是redis5.0以上不再需要redis-trib.rb了,而是使用自带的redis-cli作为创建集群的命令了。

如果不是,那么将redis-trib.rb改为老版本就可以了。

在出现 Can I set the above configuration? (type 'yes' to accept):   请确定并输入 yes 。成功后的结果如下:

 连接集群进行测试

使用Redis客户端Redis-cli.exe来查看数据记录数,以及集群相关信息

命令 redis-cli –c –h ”地址” –p "端口号" ;  c 表示集群

查看集群的信息,命令:cluster info

查看主从关系,命令: info replication

主库显示信息:

从库显示信息:

查看各个节点分配slot,命令 cluster nodes

005c72fcbd96681520ed866e4d8b9d155e9da197 127.0.0.1:6383 slave 70e30d41c93a648043
14798cc756e2fc513eb8cc 0 1541145105902 5 connected
70e30d41c93a64804314798cc756e2fc513eb8cc 127.0.0.1:6380 master - 0 1541145103879
 2 connected
5461-10922
521b02ed92b7fd3da92c00686f5b004fd1697cf6 127.0.0.1:6381 master - 0 1541145104878
 3 connected
10923-16383
083402d0f0efa9f556da6e2f04b0dfecc014350c 127.0.0.1:6382 slave 5461e1d8f0d880f34b
51e548141d09b12cd8fdd6 0 1541145106902 4 connected
d0386b9f1b7f6c5a3a2687d3e454ad5a2999be7e 127.0.0.1:6384 slave 521b02ed92b7fd3da9
2c00686f5b004fd1697cf6 0 1541145102869 6 connected
5461e1d8f0d880f34b51e548141d09b12cd8fdd6 127.0.0.1:6379 myself,master - 0 0 1 connected 0-5460

可以看到有3个master,3个slave
以及可以看到master各自的slot分布情况

存几个值,看下值的分布

以6380节点为例,管理的slots为5461-10922,key为test的slot为6918,显然命中6380管理的卡槽6918,所以客户端也跳转到了6380。key为test1的slot为4768,在6379的卡槽范围0-5460,所以客户端又跳转到了6379。

Redis集群数据分配策略:

采用一种叫做哈希槽 (hash slot)的方式来分配数据,redis cluster 默认分配了 16384 个slot,当我们set一个key 时,会用CRC16算法来取模得到所属的slot,然后将这个key分到哈希槽区间的节点上,具体算法就是:CRC16(key) % 16384

注意的是:必须要3个以上的主节点,否则在创建集群时会失败,三个节点分别承担的slot 区间是:

节点A覆盖0-5460;
节点B覆盖5461-10922;
节点C覆盖10923-16383.

至此,Redis Cluster在Windows上的配置就完成了

在windows上搭建redis集群(Redis-Cluster)相关推荐

  1. Windows下搭建Tomcat集群的配置详解

    < Windows下搭建Tomcat集群基础入门详解 > 前言 在搭建 < Apache + Tomcat 实现Web服务器集群 > 前我们还需要实现 Tomcat集群实现Se ...

  2. windows下搭建mysql集群_Windows下搭建MySQL集群

    本文将讨论在Windows下搭建MySQL集群的步骤和搭建过程中应当注意的问题. 由于机器数量和性能有限,搭建环境为一台宿主机(IP:10.200.178.191),一台虚拟机(IP:10.200.1 ...

  3. 微信公众号 多台服务器,在多台 Linux 服务器上搭建 Pulsar 集群

    作者:高天赐 编辑:Irene Pulsar 是一个支持多租户的.高性能的消息中间件.上一篇我们介绍了如何在 Mac 上搭建 Pulsar 集群,本文详细介绍如何在 3 台 Linux 服务器上搭建 ...

  4. 两台服务器安装redis集群_Redis Cluster搭建高可用Redis服务器集群

    一.Redis Cluster集群简介 Redis Cluster是Redis官方提供的分布式解决方案,在3.0版本后推出的,有效地解决了Redis分布式的需求,当一个节点挂了可以快速的切换到另一个节 ...

  5. 一键脚本搭建docker redis 集群(cluster)

    前言 在开发环境中,大家应该都用的是redis单点吧,但是在生产环境中我相信没有人敢用单点的,应该都是用的cluster,因为万一单点挂掉的话,我们的应用也就自然而然的ConnectionExcept ...

  6. 【Redis核心知识 八】Redis集群之Cluster模式及集群搭建

    上一篇blog[Redis从入门到放弃系列 十四]Redis集群之哨兵模式详细介绍了哨兵模式,加上之前讲到的主从复制模式,一共聊到了两种模式,实际上哨兵模式也是基于主从复制上的一种更加高可用的模式,那 ...

  7. 玩转Redis集群之Cluster

    前面我们介绍了国人自己开发的Redis集群方案--Codis,Codis友好的管理界面以及强大的自动平衡槽位的功能深受广大开发者的喜爱.今天我们一起来聊一聊Redis作者自己提供的集群方案--Clus ...

  8. Redis:Redis集群模式(Cluster)原理

    1.前言 由于Redis主从复制模式和Redis哨兵模式采用的都是复制Master节点的数据,实现读写分离.但是这种设计存在一个严重的问题,它没有真正意义上实现数据分片.两个模式都有一个问题,不能水平 ...

  9. Redis集群(Cluster)

    Redis集群 集群解决的问题 代理主机和无中心化集群 Redis集群的特点 Redis集群环境搭建 slots(插槽) 在集群中录入值 查询集群中的值 故障恢复 Redis集群的优缺点 集群解决的问 ...

  10. 单机上搭建Node集群

    搭建Node集群需要复制进程,而且通过主从模式并行处理业务.主进程不负责具体的业务处理,而是负责调度或管理工作进程,它是趋向于稳定的.工作进程负责具体的业务处理. 关于本 Node 进程的介绍请看No ...

最新文章

  1. C++ 智能指针的正确使用方式
  2. kernel 3.10内核源码分析--中断--中断和异常返回流程
  3. 解决Centos 7安装在虚拟机中没有图形界面的问题
  4. Java Redis 连接池 Jedis 工具类,java基础面试笔试题
  5. python显示图片_python 一个figure上显示多个图像的实例
  6. 练习:string.h常用字符串
  7. 电脑连接电视方法详解_笔记本连接电视有哪些设置方法
  8. 干支纪年法VB编程:输入一个年份,程序会列出从该年份开始的12年的干支纪年和生肖,希望大神帮我解释期中的关键语句
  9. java工程师求职简历,实战案例
  10. db2exc_971_WIN_x86,db2数据库下载,不是官方下载,直接可下
  11. xp系统如何启用服务器服务,xp系统怎么样启用远程服务器
  12. 表格进阶03—出纳日报表(表格,再次练习)
  13. 多级延迟效果器:D16 Group Tekturon for Mac()
  14. 开源、强大的Linux服务器集群管理工具,比宝塔好用!
  15. Qt编写安防视频监控系统56-数据库分页
  16. windows下sass开发环境的搭建
  17. 【科软课程NLP】自然语言处理复习
  18. 深度学习深度信念网络DBNs—简易详解
  19. Windows pytorch编译安装SoftPool
  20. 【警告:操作失误造成硬盘毁灭性故障】

热门文章

  1. sql server (mssqlserver)无法启动,事件查看器提示SQL Server 无法生成 FRunCM 线程
  2. RPC Over HTTPS 访问Exchange 邮箱
  3. leetcode100. 相同的树
  4. SpringCloud config 配置中心集群配置以及整合消息总线BUS实现关联微服务配置自动刷新
  5. kafka 初步学习
  6. 你可能不知道的关于 Git stash 的技巧
  7. android 底部导航,Android 底部导航之BottomNavigationBar
  8. Java高并发编程详解系列-内存模型
  9. 安装完MySQL数据库,在服务列表里找不到MySQL的解决办法
  10. Linux中7个判断文件系统类型的方法