1)、无中心化就是所谓的去中心化(客户端与redis节点直连,不须要中间proxy层.客户端不须要链接集群全部节点,链接集群中任何一个可用节点便可)
2)、在线自动扩容缩容
3)、自动failover(节点的fail是经过集群中超过半数的节点检测失效时才生效.经过投票机制)
4)、单层框架相应时间短
5)、全部的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽
6)、redis 集群中内置了 16384 个哈希槽,当须要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,而后把结果对 16384 求余数,这样每一个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis会根据节点数量大体均等的将哈希槽映射到不一样的节点
node
一、单机的redis搭建就不说了,公众号中有一篇从零开始搭建redis的文章,教你从零开始安装虚拟机到redis安装完成
公众号:
二、redis集群配置
1)、在redis的文件夹下面建立一个redis-cluster文件夹
程序员
2)、将redis.conf文件拷贝到当前文件夹下
redis
3)、修改刚刚拷贝的redis.conf配置文件
protected-mode no 禁止保护模式
port端口号为6379
算法
将ip改为 bind 0.0.0.0 任何ip都能访问到bind的IP(也能够注释掉,这样任何桌面客户端均可以链接了)(把防火墙关闭了)
ruby
指定文件存放路径 ( .rdb .aof nodes-xxxx.conf 这样的文件都会在此路径下)
服务器
启动集群模式
微信
cluster-config-file 集群节点配置文件
架构
daemonize yes 后台启动
app
cluster-node-timeout 15000 指定集群节点超时时间
框架
appendonly yes 指定持久化方式
写好一份copy 6份以后,每台都搞一份就能够了
分别启动每一台redis,启动成功
建立集群,此种方式是redis5.0版本的,以前3.0版本的不是这样的,网上有不少例子了,官网也有说明我就不介绍了
解析:看错误是没有权限,有多是没有设置链接密码,配置一下试试
配置链接master的密码
配置链接我须要的密码
此时建立集群成功,注意输入命令最后面加上密码 -a redis ,图中能够看出3个主机Master,3个从机Slave ,分配的槽点区间为[0 - 5460、5461 - 1092二、10923 - 16383]
链接其中一个节点查看集群信息,cluster_state:ok 集群状态:OK,一共16384个槽点(slots),cluster_slots_ok:16384 全部节点都是好的,6个节点等等
集群节点信息, 三个主机节点,三个从机节点
查看redis进程
干掉一个集群中的一个主节点,查看集群信息,cluster:fail,集群状态fail,一共16384个槽点(slots),cluster_slots_ok:10923
集群节点信息,172.16.178.2节点的master 宕机了,fail, [0 - 5460] 个插槽失去了链接
将刚刚干掉的redis启动起来
再一次查看集群信息,cluster_state:ok 集群状态:OK,一共16384个槽点(slots),cluster_slots_ok:16384 全部节点都是好的,6个节点等等
再一次查看集群节点信息,此时172.16.178.6再也不是slave了变成了master,并且172.16.178.2也不是master了变成了slave,且以前失去链接的 [0 - 5460] 槽恢复了链接
帮忙关注一下 微信公众号一块儿学习 :chengxuyuan95(不同的程序员)