一、Redis集群的简单介绍
Redis 集群是一个提供在多个Redis节点之间共享数据的程序集。Redis 集群并不支持同时处理多个键的 Redis 命令,因为这需要在多个节点间移动数据,这样会降低redis集群的性能,在高负载的情况下可能会导致不可预料的错误。Redis 集群通过分区来提供一定程度的可用性,即使集群中有一部分节点失效或者无法进行通讯, 集群也可以继续处理命令请求。
Redis 集群的优势:
1.缓存永不宕机:启动集群,永远让集群的一部分起作用。主节点失效了子节点能迅速改变角色成为主节点,整个集群的部分节点失败或者不可达的情况下能够继续处理命令;
2.迅速恢复数据:持久化数据,能在宕机后迅速解决数据丢失的问题;
3.Redis可以使用所有机器的内存,变相扩展性能;
4.使Redis的计算能力通过简单地增加服务器得到成倍提升,Redis的网络带宽也会随着计算机和网卡的增加而成倍增长;
5.Redis集群没有中心节点,不会因为某个节点成为整个集群的性能瓶颈;
6.异步处理数据,实现快速读写。
Redis 集群的数据分片
Redis 集群没有使用一致性hash,而是引入了哈希槽的概念。Redis 集群内置了16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽。集群的每个节点负责一部分hash槽,举个例子,比如当前集群有3个节点,那么:节点 A 包含 0 到 5500号哈希槽、
节点 B 包含5501 到 11000 号哈希槽.、节点 C 包含11001 到 16384号哈希槽. 由于从一个节点将哈希槽移动到另一个节点并不会停止服务,所以无论添加删除或者改变某个节点的哈希槽的数量都不会造成集群不可用的状态.
Redis 参考文档
官方集群指南
官方集群规范
中文集群指南
中文集群规范
二、搭建环境
CentOS7.3 、 Redsi5.x 、编译安装好一个Redis
三、集群搭建
将安装编译好的redis/bin目录先复制一份到redis-cluster
mkdir redis-cluster
cp -r redis/bin/ redis-cluster/redis01
修改redis.conf配置
bind 192.168.100.151 //写上服务器的IP地址
port 7001 //节点1端口号7001
cluster-enabled yes //解开注释 启动集群模式
再将复制好的修改好的redis01。复制5份,port改为7002-7006
启动redis。可以创建一个批处理文件。不然还要一个一个启动
使用redis-cli创建整个redis集群 — redis5以前的版本集群以来ruby脚本,redis-trib.rb。
到redis源码目录下的src目录下复制redis-cli
cp -r redis-cli /yangk/Redis/redis-cluster
创建集群
./redis-cli --cluster create --cluster-replicas 1 192.168.100.151:7001 192.168.100.151:7002 192.168.100.151:7003 192.168.100.151:7004 192.168.100.151:7005 192.168.100.151:7006
写入每个redis节点的IP地址+端口。n的意思是一个主节点对应一个从节点
创建过程中有一个地方属于yes就可以了。
进入redsi的任意节点,创建几个key
./redis-cli -c -h 192.168.100.151 -p 7001
其他命令
cluster info //进入任意节点,查询集群信息
cluster nodes //进入任意节点,查询节点列表