Redis集群安装教程(基于Ruby)
Redis集群安装教程(基于Ruby)
安装Redis
本教程使用:Redis-x64-3.2.100
下载地址:https://github.com/MicrosoftArchive/redis/releases
解压安装,并且复制6份,使用3主3从模式,将安装包名称修改为各自的端口名称
修改配置
找到Redis配置文件redis.windows.conf,修改内容如下,注意每个Redis都要修改:
port 7000 # 端口号,主:7000、7001、7002,从:8000、8001、8002
cluster-enabled yes # 是否启动集群
cluster-config-file nodes-6379.conf # 该节点的配置信息,这里使用 nodes-端口.conf命名方法,服务启动后会在目录生成该文件
cluster-node-timeout 15000 # 连接时间
appendonly yes # 开启AOF模式
在每个Redis下新建一个启动脚本,名称为startup.bat,内容如下:
title redis-7000 # title命名规则,redis-相对应的端口
redis-server.exe redis.windows.conf
安装Ruby
Redis的集群使用Ruby脚本编写,所以系统需要有Ruby环境
下载地址:https://rubyinstaller.org/downloads/
直接选择安装地址,下一步安装,本教程安装在redis集群的同级目录下
安装Rubygems
安装Redis的Ruby驱动redis-xxxx.gem,下载zip格式文件,解压到指定目录下
下载地址:https://rubygems.org/pages/download
cmd进入到D:\Redis\redis_cluster\rubygems-3.1.4,即驱动文件夹下,执行ruby setup.rb;
然后cmd进入到D:\Redis\redis_cluster\7000,即任意一个主Redis目录下,执行gem install redis
下载集群脚本
下载地址:https://github.com/beebol/redis-trib.rb
将redis-trib.rb放入到集群目录下,其实可以放到任意目录
执行startup.bat脚本启动所有的Redis,cmd进入D:\Redis\redis_cluster,即redis-trib.rb所在目录,执行命令:
redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:8000 127.0.0.1:8001 127.0.0.1:8002
--replicas 1 表示每个主数据库拥有从数据库个数为1。master节点不能少于3个,所以我们用了6个redis。
注意:如果出现redis-trib.rb is not longer available! 如果Redis版本是5.0以上,则应该使用如下命令:
redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:8000 127.0.0.1:8001 127.0.0.1:8002 --cluster-replicas 1
原因是redis5.0以上不再需要redis-trib.rb了,而是使用自带的redis-cli作为创建集群的命令了。
集群测试
由于每次一个一个启动太浪费时间,所以在D:\Redis\redis_cluster目录下创建一键启动脚本start.bat:
@echo off
start /d "D:/Redis/redis_cluster/7000" startup.bat
start /d "D:/Redis/redis_cluster/7001" startup.bat
start /d "D:/Redis/redis_cluster/7002" startup.bat
start /d "D:/Redis/redis_cluster/8000" startup.bat
start /d "D:/Redis/redis_cluster/8001" startup.bat
start /d "D:/Redis/redis_cluster/8002" startup.bat
pause
启动所有Redis之后,cmd进入7000端口的Redis,进入客户端
redis-cli -c -h localhost -p 7000
查看集群的信息,命令:cluster info
查看主从关系,命令:info replication
进入从Redis执行该命令,可以查看从Redis相关信息
查看各个节点分配slot,命令cluster nodes
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
测试存储,可以看到test存储到了7001,test1存储到了7000,并且从库也进行了数据存储
至此,Redis集群搭建完成,在项目中进行配置即可使用