搭建redis 集群----Windows 篇(史上最细,会聊天打字的人都学会了,需要的是耐心)

\color{red}{提前说好:本篇是在windows上搭建redis 集群,若走错了,别慌,请点击这里}csdn博客

由于公司项目使用的架构不得不使用redis 集群,但公司的网络又差的让人崩溃,所以决定搭建一套本地环境,共开发使用;

本文侧重点主要在于如何搭建redis集群(cluster模式) ,看完之后,即可随意搭建N主N从的Cluster模式(最低3主)。如果不是非必须,还是建议在Linux上搭建redis 集群,windows 上某些操作还是挺受限制的,倒是不影响使用。

一、简单介绍

1,Redis集群分为三种模式,下列顺序由简单到复杂
        1,主从模式    `redis实例架构:一主多从`

        2,哨兵模式(sentinel模式) `建立在主从模式基础上,redis实例架构:一主多从多哨兵,哨兵的作用是监听主库挂掉之后,会选举一个从库提升为主库,从而做到高可用,所以哨兵redis实例建议不要与 主库实例与从库实例在一台服务器上`

        3,cluster模式,`也就是本文主要介绍的,redis实例架构:N主N从,(最低三主)比如:3主0从(3台redis 实例),3主3从(6台redis实例),本文介绍3主0从,虽然意义不大,但是够用就好,当然你可以搭建30主60从(90个redis 实例而已)`
2,redis集群的三种模式最初目标都是一致的,无论哪种模式,首先确定需要几个redis 实例,就先启动几个redis 实例,启动过程无非就是每个实例与每个实例的配置(redis.conf)不同罢了,比如:端口肯定不能相同;当然启动时必须要指定当前实例对应的配置;由于cluster模式solt槽默认总共为16383,如果选择3主的话,在创建集群的时候将16383 平均分配给这三个redis 实例,在每次添加key是,会将key进行hash 算法之后的值对16383取余,再确定存储在哪个redis 实例之上。

本文不做过多的阐述,redis详解请点击这里:https://blog.csdn.net/miss1181248983/article/details/90056960

二、实战

1, 安装包准备

ps: ruby的版本与rubygems 的版本应大致保持一致,不要相差太大,本文采用ruby 2.7 ,rubygems 2.6,是没有问题的,相差过大可能会引起下面安装 ruby连接redis驱动失败 等问题,自行下载安装包的同学请注意!

1,下载windows版本的Redis(本文使用的 redis3.2.100,截至20210804最新版)

若您选择在github上下载,也需要将redis源码下载一份,由于创建集群使用的一个ruby脚本在redis源码中(脚本的名字叫做redis-trib.rb),在redis安装包中没有。不过在百度网盘与蓝奏云的安装包里已经已经放了redis-trib.rb 脚本;
github下载地址:https://github.com/MSOpenTech/redis/tags
百度网盘:https://pan.baidu.com/s/1ewi_yAZ3xVYDafmoZnBP3A 提取码: tafn
蓝奏云:https://wwe.lanzoui.com/iwjqIsa4gle 密码:0707

2,下载 Ruby

由于创建集群需要使用一个ruby脚本(指的就是上面所说的redis源码中存放的ruby脚本),所以需要下载ruby来执行这个脚本,这也就是windows目前 创建集群的一个弊端,在linux的redis 5.0之后的版本已经支持 使用redis-cli的方式创建集群了,目前windows还不支持

官网下载:https://rubyinstaller.org/downloads/archives/
百度网盘:https://pan.baidu.com/s/1-q0tJee7QGLXBFT_UvtYTQ 提取码: 4ibz
蓝奏云:https://wwe.lanzoui.com/izWMzsa4bfi 密码:0707

3,下载 rubygems (这个工具是用来安装 《ruby连接redis 的一个驱动》)

官网下载:https://rubygems.org/pages/download
百度网盘:https://pan.baidu.com/s/1XMbTPf3Dmw-zmdu3ZCc8WA 提取码: wpzs
蓝奏云:https://wwe.lanzoui.com/iIHUjsa4b3g 密码:0707

2, 安装并启动

1,redis 安装

将下载的redis安装包 解压到你需要安装的目录即可,便可以启动redis实例了,我的是F盘redis_cluster/bin目录,如下图:

redis 安装目录.png
2,ruby 安装

将下载的ruby 安装包解压到你想安装的目录即可;我的F盘根目录,如下图:

ruby安装目录.png
3,rubygems 安装

1,将下载的rubygems 安装包解压到你想安装的目录;我的F盘根目录,如下图

rubygems安装目录.png

2,打开dos窗口(不知道如何打开,百度搜一下),进入到rubygems的安装目录下,执行 ruby setup.rb,如下图

rubygems install.png
4,安装ruby 连接的redis 驱动

打开dos窗口,进入到ruby安装目录的bin 目录下,执行 gem install redis,出现windows 安全中心警报,允许访问即可,如下图:

image.png
5,启动全部redis 实例

本文演示创建3主架构的集群,我就只启动3个redis 实例即可,启动几个redis实例,就需要几个配置文件,你们想多创建几个也可以,大同小异;

1, 创建3个redis.conf配置文件

ps 配置中#号开头的为注释

1、redis_6301.conf
#绑定的ip,在连接是redis 实例只能使用 该ip,连接,若不是只有自己使用,建议不配置此选项 比如:redis-cli -h 127.0.0.1 
#bind 127.0.0.1
#端口号
port 6301
# 日志目录,注意自己日志放在什么目录下,本文采取的是相对路径(相对于在哪层目录下执行启动redis实例 的命令)
logfile "logs\\redis_6301.log"
# 数据目录  注意自己数据放在什么目录下,找不到该目录会启动失败
dir "data\\redis_6301\\"
# 保护模式关闭,如果在未设置密码的情况下,必须关闭保护模式,集群才可以正常使用
protected-mode no
# 访问主库时的密码
#masterauth 123456
# redis 实例连接密码
#requirepass
#开启进群
cluster-enabled yes
# 集群节点配置
cluster-config-file nodes_6301.conf
# redis 节点超时 15s
cluster-node-timeout 15000
# 开启aof 持久化
appendonly yes

2、redis_6302.conf
#bind 127.0.0.1
port 6302
logfile "logs\\redis_6302.log"
dir "data\\redis_6302\\"
protected-mode no
#masterauth 123456
#requirepass
appendonly yes
cluster-enabled yes
cluster-config-file nodes_6302.conf
cluster-node-timeout 15000

3、redis_6303.conf
#bind 127.0.0.1
port 6303
logfile "logs\\redis_6303.log"
dir "data\\redis_6303\\"
protected-mode no
#masterauth 123456
#requirepass
appendonly yes
cluster-enabled yes
cluster-config-file nodes_6303.conf
cluster-node-timeout 15000

2、启动三个redis 实例

ps 启动之前,展示一下我当前的redis_cluster 安装目录结构,logs目录下为空,bin目录下为 上图 redis 安装目录.png ,注意观察下图中的路径:

redis根目录.png

data.png

conf.png

打开dos 窗口,进入redis 根目录下 ,依次执行以下命令:

bin\redis-server.exe conf\redis_6301.conf

bin\redis-server.exe conf\redis_6302.conf

bin\redis-server.exe conf\redis_6303.conf

需要打开三个 dos窗口,由于window 版本的不支持直接后台启动,启动之后且不能关闭dos 窗口,若想实现后台启动,需安装服务;本文暂不介绍安装redis 服务的启动方式。

启动.png

ps 在创建集群的时候,需要所有的redis 实例必须全部启动,并且全部可连接成功;创建集群之前每个实例与每个实例之间并没有互通;创建集群之后,才可以在存缓存的时候,经过hash 算法取模,确定存储在哪个redis实例上,在取缓存的时候,还会经过同样的算法去对应的实例上取数据;;; 别着急,下一小节贴图

6,为redis 实例创建集群

使用 redis-trib.rb 来创建集群,若你的redis 里没有redis-trib.rb这个脚本,请在源码的src目录复制一份到redis安装目录
无从库的情况:
执行命令: ruby redis-trib.rb create 127.0.0.1:6301 127.0.0.1:6302 127.0.0.1:6303
有从库的情况(下面命令6台redis 实例:3主3从,每一个主库有一个从库):
执行命令: ruby redis-trib.rb create --replicas 1 127.0.0.1:6301 127.0.0.1:6302 127.0.0.1:6303 127.0.0.1:6304 127.0.0.1:6305 127.0.0.1:6306
ps --replicas n 的意思是 为每个主库建立n个从库,所以说若想保证主库能够平均分配同样的从库实例,应满足:实例总数%(n+1) = 0

创建集群成功图.png

3,结束语

简单介绍安装redis 服务,后台启动教程
为每一个redis 实例安装服务,即可使用 net start redis6301(服务名) 来启动

安装服务的命令:

F:/reids_cluster/bin/redis-server.exe --service-install D:/redis_cluster/conf/redis.6380.conf --service-name redis6301(服务名)

卸载服务的命令():

F:/reids_cluster/bin/redis-server.exe --service-uninstall --service-name redis6301

ps 这里有一个非常需要注意的地方,就是上面安装服务的命令 指定的配置建议使用绝对路径,以及配置里的日志路径(logfile)和数据路径(dir)都建议使用绝对路径而非相对路径,不是相对路径不可以,而是需要改变原有的目录结构,而且很容易出错,不是相对路径配置对就可以了,我尝试过,觉得有bug,最终以redis-server.exe与配置文件在同层目录下安装服务成功的,反正相对路径的方式安装服务挺坑的,若配置中不配置logfile 和data的话 就不说了,随便安装服务;还有要注意的就是,若添加了logfile,那在使用redis-server.exe 期间执行的所有命令的日志,都会在logfile 配置的日志文件中,包括上面安装启动redis 服务的日志,建议 先去掉logfile,尝试安装成功之后,在卸载掉服务,配置好日志,再去安装服务。

如有不符之处,欢迎评论。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容