1.redis-cluster架构图
2.架构细节:
(1) 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.
(2) 节点的fail是通过集群中超过半数的节点检测失效时才生效.
(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
(4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护
node<->slot<->value
Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点
3.集群搭建
这里使用伪分布式搭建redis-cluster,集群中应该至少有三个节点,每个节点有一备份节点。需要6台服务器。
第一步:创建6个redis实例指定端口从7001到7006
3.1.1 新建一个 redis-cluster 文件夹
[root@localhost local]# mkdir redis-cluster
3.1.2 复制6份单机版中 的redis 到 redis-cluster 中
需要删除 dump.rdb文件
[root@localhost local]# cp -r redis redis-cluster/
第二步:修改redis.conf 打开Cluster-enable yes前面的注释 修改port。
第三步:需要一个ruby脚本。在redis源码文件夹下的src目录下。redis-trib.rb, 拷贝到 redis-cluster 下
cp /usr/local/redis-3.2.6/src/redis-trib.rb /usr/local/redis-cluster/
第四步:执行ruby脚本需要安装ruby环境。
1、yum install ruby
2、yum install rubygems
3、安装redis-trib.rb运行依赖的ruby的包。
下载redis-3.2.2.gem
redis-3.3.0 官网下载地址: https://rubygems.org/gems/redis/versions/3.3.0
redis-3.0.0 官网下载地址:https://rubygems.org/downloads/redis-3.0.0.gem
下载之后 上传并安装
[root@localhost donggua]# gem install redis-3.2.2.gem
gem install [redis-3.2.2.gem 长传路径]
第五步:使用脚本启动所有的redis实例。
[root@localhost redis-cluster]# vim redis-cluster-start.sh
#!/bin/sh
cd redis01/bin
./redis-server redis.conf
cd ../..
cd redis02/bin
./redis-server redis.conf
cd ../..
cd redis03/bin
./redis-server redis.conf
cd ../..
cd redis04/bin
./redis-server redis.conf
cd ../..
cd redis05/bin
./redis-server redis.conf
cd ../..
cd redis06/bin
./redis-server redis.conf
cd ../..
启动:
[root@localhost redis-cluster]# ./redis-cluster-start.sh
第六步:使用redis-trib.rb创建集群。
./redis-trib.rb create --replicas 1 192.168.31.99:7001 192.168.31.99:7002 192.168.31.99:7003 192.168.31.99:7004 192.168.31.99:7005 192.168.31.99:7006
至此,redis集群搭建完毕。
客户端连接
使用客户端连接集群: redis01/redis-cli -p 7001 -c
后面将会基于单机版 和集群版 来讲解一些细节和理论知识。
1.Redis学习-配置
2.Redis学习-持久化
3.Redis学习-数据结构