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会根据节点数量大致均等的将哈希槽映射到不同的节点
1、单机的redis搭建就不说了,公众号中有一篇从零开始搭建redis的文章,教你从零开始安装虚拟机到redis安装完成
公众号:
2、redis集群配置
1)、在redis的文件夹下面创建一个redis-cluster文件夹
2)、将redis.conf文件拷贝到当前文件夹下
3)、修改刚刚拷贝的redis.conf配置文件
protected-mode no 禁止保护模式
port端口号为6379
将ip改成 bind 0.0.0.0 任何ip都能访问到bind的IP(也可以注释掉,这样任何桌面客户端都可以连接了)(把防火墙关闭了)
指定文件存放路径 ( .rdb .aof nodes-xxxx.conf 这样的文件都会在此路径下)
启动集群模式
cluster-config-file 集群节点配置文件
daemonize yes 后台启动
cluster-node-timeout 15000 指定集群节点超时时间
appendonly yes 指定持久化方式
写好一份copy 6份之后,每台都搞一份就可以了
分别启动每一台redis,启动成功
创建集群,此种方式是redis5.0版本的,之前3.0版本的不是这样的,网上有很多例子了,官网也有说明我就不介绍了
解析:看错误是没有权限,有可能是没有设置连接密码,配置一下试试
配置连接master的密码
配置连接我需要的密码
此时创建集群成功,注意输入命令最后面加上密码 -a redis ,图中可以看出3个主机Master,3个从机Slave ,分配的槽点区间为[0 - 5460、5461 - 10922、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(不一样的程序员)