目录
一、下载windows版本的redis
百度网盘:https://pan.baidu.com/s/19LVXqtp8lHNRqeYQkc8CKA
提取码:v5oj
win_x64 当前版本是5.0.10
二、解压redis到一个目录下
以图为例,解压,目录自选
三、创建集群节点目录
创建一个clsuter(注:这个单词写错了,名称自取)目录,在目录下创建出6个节点的文件夹,将redis.windows-service.conf拷贝到对应的文件夹下,如图:
修改redis.windows-service.conf文件,在port 6379 这行开始,加入以下内容。
#屏蔽当前端口
#port 6379
#开启7001端口
port 7001
cluster-enabled yes
cluster-config-file nodes7001.conf
cluster-node-timeout 5000
appendonly yes
port 对应6个文件夹的端口名称,nodes7001.conf 也是同理
至此,准备工作已完全就绪,目前redis5是不需要ruby环境的,所以不需要安装rubyinstall和rubygems,此坑已经填平。
四、注册windows服务
用cmd命令回到D:\reidsClsuter\redis目录,在cmd中执行以下命令,注册redis不同端口下的实例
#注册服务
redis-server --service-install redis.windows-service.conf --loglevel verbose
redis-server --service-install D:\reidsClsuter\redis\clsuter\7001\redis.windows-service.conf --service-name redis7001
redis-server --service-install D:\reidsClsuter\redis\clsuter\7002\redis.windows-service.conf --service-name redis7002
redis-server --service-install D:\reidsClsuter\redis\clsuter\7003\redis.windows-service.conf --service-name redis7003
redis-server --service-install D:\reidsClsuter\redis\clsuter\7004\redis.windows-service.conf --service-name redis7004
redis-server --service-install D:\reidsClsuter\redis\clsuter\7005\redis.windows-service.conf --service-name redis7005
redis-server --service-install D:\reidsClsuter\redis\clsuter\7006\redis.windows-service.conf --service-name redis7006
通过任务管理器,可以看到redis服务已经全部注册成功,并启动所有实例。如图:
五、创建集群
还是用cmd管理台回到D:\reidsClsuter\redis目录,执行如下命令
#创建集群
redis-cli --cluster create 192.168.1.80:7001 192.168.1.80:7002 192.168.1.80:7003 192.168.1.80:7004 192.168.1.80:7005 192.168.1.80:7006 --cluster-replicas 1
#--cluster-replicas 1 表示每个主节点有一个从节点
执行后会输出如下信息
如果所有slot都被分配成功了,则说明集群已经部署完成。
六、测试
测试一:hello world(部署成功了,当然离不开最开始的hello world)
通过某一台登录,登录命令为:
#登录集群
redis-cli -c -p 7001 -h 192.168.1.80
测试二:查询集群情况
#查看集群信息
cluster nodes
如图可以看到当前7001~7003是主节点,7004~7006为slave节点
测试三:
1.在某一台redis实例上存储数据是否会存储到别的实例上
2.未存储数据的redis实例是否能读取到已经存储数据的redis是咧
图一
图二
如图一,在7002上存储一个key 后会存入7003的实例中。
如图二,在7004上读取到7003上的数据。
到这里似乎还有个问题,为什么数据不会去从节点读呢?(待验证)
测试四:
1.测试主节点下线,从节点是否能立马补位
2.是否遵循主从复制
我们将节点7003下线,通过windows服务停止,来测试,是否会有其他从节点切换成主节点
实验结果如下:
当7003宕机之后,7004跃升为主节点,再通过获取hello world的数据测试。结果如下:
可以看到数据已经在7003宕机后,写入了7004。
七、总结和拓展
总结:
一、单机下可以实现伪集群部署。
二、单机下可以实现主从自动切换。
三、redis5版本可以通过redis-cli来创建集群。
四、在部署redis集群后,redis已经封装了如何存储到哪个节点的hash算法。
拓展:(以一台16g内存的笔记本为准)
一、redis实例是否可以超出笔记本内存大小来实现交叉分配?
二、redis实例如果申请内存交叉了,会不会共享数据?
三、redis在单机下的单台部署并发和伪集群部署并发是一样的吗?