最近面试才发现自己忽视和Redis的重要性,所以从头来开始好好学习一下redis。
首先我们需要下载:下载地址
下载解压后我们会得到这样一个结构:
接下来,启动它: redis-server.exe
这个时候我们已经吧服务端启动了。(此时为前端启动)
然后我们再把客户端启动: redis-cli.exe -h 127.0.0.1 -p 6379
注意不要把原来的服务端关闭哦,端口号也要注意需要统一。
这个时候就代表我们已经启动成功了。
为了测试我们的redis是否可用,我们可以设置键值对来测试。
实验结果正常,完美收工
接下来让我们进行windows下集群的搭建。
我们使用redis-trib.rb工具来创建Redis集群,由于该文件是用ruby语言写的,所以需要安装Ruby开发环境,以及驱动redis-xxxx.gem。
首先,我们需要安装ruby环境,然后安装redis驱动 gem install redis
因为我的电脑已经安装过了ruby,所以忽略了ruby的安装。
然后我们先把我们之前下好的redis文件夹复制六份(第一个文件夹是原生的,没变过,用作单机,剩下的六个才是集群使用的)
修改每个目录下面的 redis.windows.conf 文件
我们可以按照我们的文件夹后面的名字以此修改为7000 7001 7002 这里我们就已经修改了我们每个redis的端口号。
同时我们需要修改当前文件以下配置:
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 15000
appendonly yes
cluster-enabled 这个配置代表这是个集群节点
cluster-config-file 这个是节点配置文件 端口号随着当前redis不同而不同,且会随着redis启动自动创建
appendonly 开启持久化
等到这些修改了好了之后,我们创建一个脚本来方便我们启动redis。(端口记得更换哦)
title redis-7001
redis-server.exe redis.windows.conf
然后依次点击我们的redis的启动脚本
启动好了之后我们需要下载我们的工具redis-trib.rb。下载地址
然后输入: ruby 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:7003 127.0.0.1:7004 127.0.0.1:7005
回车会提示如下:
我们输入 yes,会提示:
先不管,我们测试一下,我们先打开一个节点的客户端:
redis-cli.exe -h 127.0.0.1 -p 7000 -c(h自然是主机号,p是端口号,c连接集群结点时使用,此选项可防止moved和ask异常。)
进行set get 发现确实两个节点下的数据已经共同了。说明已经搭建成功。
同时我们也可以打开输入 cluster nodes 查看主从节点
附言:
1、后端启动:
对于这种服务端都需要打开一个窗口,也就是前端启动,所以我们可以设置为后端启动
1. 在Redis的安装目录 进入 DOS窗口
2. 输入:redis-server --service-install redis.windows.conf --loglevel verbose ( 安装redis服务 )
3. 输入:redis-server --service-start ( 启动服务 )
4. 输入:redis-server --service-stop (停止服务)
或者我们也可以把内容写在脚本里面,分别命名为start和stop。
2、关闭与重新启动集群
关闭集群:将所有redis服务一个一个关闭即可。
重启集群:将所有redis服务一个一个启动即可。so easy
3、添加与删除节点
添加节点
ruby redis-trib.rb add-node 127.0.0.1:7006 127.0.0.1:7000 向集群添加主节点
ruby redis-trib.rb add-node --slave 127.0.0.1:7006 127.0.0.1:7000 向集群中添加从节点,它会随机分配给任意一个主节点
第一个参数:新添加节点的地址以及端口127.0.0.1:7006
第二个参数:现有集群中任意一个服务端地址以及端口127.0.0.1:7000
ruby redis-trib.rb add-node --slave --master-id 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e 127.0.0.1:7006 127.0.0.1:7000 向集群中定向的主节点添加从节点
--master-id用来指定新节点的master节点。如果不设置该参数,则会随机为节点选择master节点。
重新分槽
新添加的主节点不含任何槽需要给他分配一些槽。参数为集群中任意旧地址
ruby redis-trib.rb reshard 127.0.0.1:7000
接下来会让你输入分配的槽数,范围在1-16384,我输入4000.
然后问我他的节点是什么,输入节点id
然后会询问你从哪个节点分出这些槽数,我选择 all,所有节点中。
最后会询问你是否执行这个分槽计划,输入yes开始执行计划。
移除节点
使用del-node命令移除节点。
如果是主节点,需要先将槽转移到其他节点上面。如果是从节点可无需此步骤。
转移和分配指令基本一致,最重要的是在Source node的时候,选择的是 all 还是 done
ruby redis-trib.rb reshard 127.0.0.1:7000
在这里我们需要输入我们要转移到数量,因为我们是转移走,所以输入他所拥有的槽数
然后输入我们要转移给那个节点,输入接收的节点id
然后再输入移除的节点id,在输入done
等到回车后,我们在输入yes,就可以等待删除节点了。
等到我们把槽转移走了之后,就可以删除节点了
ruby redis-trib.rb del-node 127.0.0.1:7006 211901d93f55093758fdd45cd7d0d87c4ca89696
第一个参数:任意集群中现有的地址 127.0.0.1:7006
第二个参数:你想移除的节点id 211901d93f55093758fdd45cd7d0d87c4ca89696(该id可以在想要移除的节点nodes.conf文件中找到,也可以在查询节点的时候发现)