概述html
Redis Cluster provides a way to run a Redis installation where data is automatically sharded across multiple Redis nodesnode
Redis集群提供一个在多个Redis节点数据自动共享的方式,简单来讲就是添加服务器的数量,达到git
Redis集群数据分片github
Redis 集群没有使用一致性hash, 而是引入了 哈希槽的概念.redis
Redis 集群有16384个哈希槽,每一个key经过CRC16校验后对16384取模来决定放置哪一个槽.集群的每一个节点负责一部分hash槽,举个例子,好比当前集群有3个节点,那么:ruby
这种结构的好处就是很是容易增长/删除节点,而且不会影响集群的使用服务器
Redis集群节点通信并发
由于Redis集群是把数据分布存放在不一样客户端,这样作的好处就是减小每台机器的压力,提升并发处理能力,由于咱们只要进入任一节点,便可使用整个集群,这就须要节点之间互相通信,这个是Redis内部处理。app
Every Redis Cluster node requires two TCP connections open. The normal Redis TCP port used to serve clients, for example 6379, plus the port obtained by adding 10000 to the data port, so 16379 in the example分布式
每个Redis集群节点都是须要两个端口,一个用于客户端链接,一个用于节点数据传输(Ping-Pong机制),数据端口是在客户端口的基础上加10000,例如,端口6379,数据端口16379,因此在多台机器部署集群须要注意防火墙是否把数据屏蔽 。
环境准备
1.安装Redis 下载地址
2. 安装Ruby,由于Redis集群管理是用ruby开发 下载地址
3. 下载edis-trib.rb文件,放在Redis安装文件夹内 下载地址
4. 安装Ruby的Redis驱动,直接在cmd执行(安装的时候把Ruby放在环境变量,不然进到Bin执行)
gem install redis
出现Successfully installed 表明安装成功
搭建Redis集群
Redis集群至少须要3个节点,就按最少的3个节点搭建一个集群
1. 准备3个配置文件,修改各自的端口和appendfilename,固然若是在3台机器上运行,什么都不须要修改
port 6379 cluster-enabled yes cluster-config-file nodes.6379.conf cluster-node-timeout 5000 appendonly yes appendfilename "appendonly.6379.aof"
2. 准备bat文件启动3个redis节点(非必须,能够手动cmd启动,配置相应配置文件),bat文件须要在redis安装目录执行
title redis-cluster start redis-server.exe redis.6379.conf start redis-server.exe redis.6380.conf start redis-server.exe redis.6381.conf
3. 用redis-trib建立集群,在cmd执行
redis-trib.rb create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381
执行完成,输入yes更新配置文件,最终输出各个节点信息,哈希槽分配状况。
至此,Redis集群已经搭建好,这里只有3个主节点,若想从节点,只需多加3个Redis节点,命令加上--replicas参数就能够。
测试Redis集群
进入redis-cli集群模式
redis-cli -c
能够看出,写入读取,Redis根据Key计算的hash值在各个节点自动重定向
打开刚刚开启的几个Redis实例,能够看出他们以前一直在不断通信
转发请标明出处:https://www.cnblogs.com/WilsonPan/p/12643221.html