RedisCluster集群部署步骤node
第一步:前提准备条件git
须要准备的内容github
一、下载Redis安装文件,Redis提供msi和zip文件格式的下载文件redis
下载地址:数据库
https://github.com/microsoftarchive/redis/releaseswindows
https://github.com/ServiceStack/redis-windows/tree/master/downloadsapi
https://download.csdn.net/download/LongtengGensSupreme/12157626ruby
二、下载Ruby安装文件app
下载地址:https://rubyinstaller.org/downloads/archives/ide
下载地址:https://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.2.4-x64.exe
三、下载Ruby环境下Redis的驱动文件,考虑到兼容性,下载版本3.2.2的redis-3.2.2.gem
下载地址:https://rubygems.org/gems/redis/versions/3.2.2
四、下载Redis官方提供的建立Redis集群的ruby脚本文件redis-trib.rb,
下载地址:https://github.com/beebol/redis-trib.rb
第二步:操做
安装配置Redis
一、安装(注:本文下面所操做的文件都是在文件根目录是E:\Source下进行的)
(1)把下载的Redis安装文件,安装或者解压到redisfile文件里面 ,而后新建rediscluster文件夹,以后复制redisfile文件,在rediscluster文件夹下粘贴六次,为什么要粘贴六次呢,Redis集群规划至少有三个节点的集群,每一个节点有一主一备,全部一共须要6台虚拟主机,以后把rediscluster文件夹下粘贴的6文件以6个对应的端口来命名,6380,6381,6382,6383,6384,6385,以下图
接着在6380文件中新建logs文件夹,存放日志,而后修改6380文件中的redis.windows.conf文件名称改为redis.6380.conf,在redis.6380.conf添加下面内容,注意行与行之间以后回车换行,不能留有空格,不然没法运行。
须要添加的信息:
port 6380
loglevel notice
logfile "E:/Source/rediscluster/6380/logs/redis6380_log.txt"
syslog-enabled yes
syslog-ident redis6380
appendonly yes
appendfilename "appendonly.6380.aof"
cluster-enabled yes
cluster-config-file nodes.6380.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes
保存,以后编写一个startredis.bat启动服务,
startredis.bat的内容是:redis-server redis.6380.conf
双击startredis.bat,启动服务,以下所示
同理,6381,6382,6383,6384,6385也是按照6380文件的操做方式对应修改便可。上述6380,6381,6382,6383,6384,6385所有操做完成,启动之后,以下图所示
注意:服务启动以后不要关闭。
(固然,由于redis启动服务使用redis-server 加载redis.windows.conf的,因此上述的操做,也 还有还有另一种方式,能够在redisfile文件里面1个logs文件和新建5个redis.windows.conf,改为对应的端口名称redis.6380.conf,redis.6381.conf,redis.6382.conf,redis.6383.conf,redis.6384.conf,redis.6385.conf,redis.windows.conf内容是上述操做的内容大体同样的,只要修改一个日志的输出路径便可)。
安装Ruby
把下载的Ruby安装文件rubyinstaller-2.2.4-x64.exe,进行安装,安装到Ruby22-x64文件夹下,注意安装过程当中下图步骤中要所有勾选。
安装Ruby环境下Redis的驱动
把下载的Ruby环境下Redis的驱动文件redis-3.2.2.gem,拷贝到Ruby22-x64文件夹下
打开E:\Source\Ruby22-x64\bin文件,路径中输入cmd,
输入:gem install --local E:/Source/Ruby22-x64/redis-3.2.2.gem
显示以下图,即表示ruby下安装Redis驱动安装成功
安装Redis集群的Ruby脚本
把下载的Redis建立Redis集群的Ruby脚本redis-trib.rb文件拷贝到E:\Source\rediscluster\6380文件下,使用Redis建立Redis集群的Ruby脚本redis-trib.rb来启动集群,路径中输入cmd 回车,
输入:
redis-trib.rb create --replicas 1 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 127.0.0.1:6385 回车
其中--replicas 1 表示每一个主数据库拥有从数据库个数为1。以前遇到错误提示master节点不能少于3个,输入命令之后显示以下界面:
redis-trib.rb create --replicas 1 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 127.0.0.1:6385, 回车
注意:
一、--replicas 1 表示每一个主数据库拥有从数据库个数为1。master节点不能少于3个,因此咱们用了6个redis(即6380, 6381,6382,6383,6384,6385)
二、上面的语句执行不成功的话,能够在前面加上ruby再运行。(本人就是加了ruby以后才建立成功的,不加ruby的话,不报错,但会有提示)
Ruby脚本redis-trib.rb启动集群,以下
在出现 Can I set the above configuration? (type 'yes' to accept): 请肯定并输入 yes 。成功后的结果以下:
第三步:测试
使用Visual Studio 2019 Enterprise新建.Net Fromwork 4.7 控制台项目ConsoleTestRedisCluster,
一、选择项目右键,点击 管理NuGet包程序,搜索StackExchange.Redis,点击安装,
二、添加代码
using StackExchange.Redis; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleTestRedisCluster { class Program { static void Main(string[] args) { #region 向Redis集群的6380端口添加数据 //使用的redis api 前提一、安装redis 二、NuGet包管理器添加 StackExchange.Redis ConnectionMultiplexer _connectionMultiplexer = ConnectionMultiplexer.Connect("localhost:6380"); IDatabase _database = _connectionMultiplexer.GetDatabase(0); string key1 = "set"; string value1 = "55555"; bool result = _database.StringSet(key1, value1); string messageSet = result ? "sucess" : "fail"; Console.WriteLine($"Redis集群的 6380 端口添加数据{key1}:{value1},结果:{messageSet}"); _connectionMultiplexer.Close(); #endregion #region 从Redis集群的6385端获取数据 ConnectionMultiplexer _connectionMultiplexer1 = ConnectionMultiplexer.Connect("localhost:6385"); IDatabase _database1 = _connectionMultiplexer1.GetDatabase(0); string messageGet = _database1.StringGet(key1).ToString(); Console.WriteLine($"从Redis集群的 6385 端口获取 {key1} 的数据:{messageGet}"); _connectionMultiplexer1.Close(); Console.ReadLine(); #endregion } } }
运行结果:
附件一:
redis.6380.conf内容:
# Redis configuration file
# 端口号
port 6380
# 日志记录级别,notice是适合生产环境下的
loglevel notice
# 指定log的保存路径,默认是建立在Redis的安装目录下,若是子目录须要手动建立
logfile "E:/Source/RedisCluster/logs/redis6380_log.txt"
# 是否使用系统日志
syslog-enabled yes
# 使用系统日志时,在系统日志中的标识名
syslog-ident redis6380
appendonly yes
# 数据保存为aof格式
appendfilename "appendonly.6380.aof"
# 是否开启集群
cluster-enabled yes
# 集群配置节点文件
cluster-config-file nodes.6380.conf
# 集群配置超时时间
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes