redis3.2.8集群搭建

本教程共用到两台服务器搭建了6个redis实例
服务器1:192.168.1.111
服务器2:192.168.1.123

安装redis3.2

wget  http://download.redis.io/releases/redis-3.2.8.tar.gz
tar -zxvf redis-3.2.8.tar.gz
cd redis-3.2.8
make PREFIX=/usr/local/redis install
cp redis.conf /usr/local/redis/
cp src/redis-trib.rb /usr/local/redis/

在服务器1创建3个redis实例

# 创建集群目录
mkdir -p /usr/local/redis_cluster
cd /usr/local/redis_cluster
#分别创建三个节点    其对应端口 7000 7001 7002
mkdir 7000 7001 7002
#拷贝配置文件到三个目录
 cp ~/redis-3.2.8/redis.conf ./redis_cluster/7000/   
 cp ~/redis-3.2.8/redis.conf ./redis_cluster/7001/   
 cp ~/redis-3.2.8/redis.conf ./redis_cluster/7002/

分别对7001,7002、7003文件夹中的redis.conf 修改

#绑定本机ip
bind 192.168.1.196 127.0.0.1
#redis后台运行
daemonize    yes                          
pidfile  /var/run/redis_7000.pid
#端口          
port  7000 
#开启集群                               
cluster-enabled  yes                      
#集群的配置  配置文件首次启动自动生成
cluster-config-file  nodes_7000.conf   
请求超时,单位毫秒  
cluster-node-timeout  5000
#aof日志开启  有需要就开启,它会每次写操作都记录一条日志                
appendonly  yes                           

启动redis实例

/usr/local/redis/bin/redis-server /usr/local/redis_cluster/7000/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis_cluster/7001/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis_cluster/7002/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis_cluster/7003/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis_cluster/7004/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis_cluster/7005/redis.conf

查看启动没有

ps -ef|grep redis
redis3.2.8集群搭建
image.png

安装ruby和rubygems

yum -y install ruby ruby-devel rubygems rpm-build

用 gem 这个命令来安装 redis接口

gem install redis

如果报错
Error installing redis:redis requires Ruby version >= 2.2.2
升级Ruby

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
curl -sSL https://get.rvm.io | bash -s stable 
source  /etc/profile.d/rvm.sh

查看rvm库中已知的ruby版本

rvm list known
redis3.2.8集群搭建
image.png

如果没有ruby版本就执行下面语句

rvm get head

安装ruby

rvm install 2.4.1

查看ruby版本号

ruby --version

gem install redis


redis3.2.8集群搭建
image.png

再用 gem 这个命令来安装 redis接口

  gem install redis

创建集群

/usr/local/redis/redis-trib.rb create --replicas 1 192.168.1.111:7000 192.168.1.111:7001 192.168.1.111:7002 192.168.1.123:7003 192.168.1.123:7004 192.168.1.123:7005
redis3.2.8集群搭建
image.png

输入yes完成创建


redis3.2.8集群搭建
image.png

到这里集群创建成功

测试集群

在服务器1中存入数据
/usr/local/redis/bin/redis-cli -h 192.168.1.111 -c -p 7000


redis3.2.8集群搭建
image.png

在服务2中取出数据


redis3.2.8集群搭建
image.png

查看节点信息

cluster nodes
redis3.2.8集群搭建
image.png

php代码测试

<?php
    $obj_cluster = new RedisCluster(NULL, ['192.168.1.111:7000', '192.168.1.111:7001', '192.168.1.111:7002','192.168.1.123:7003', '192.168.1.123:7004', '192.168.1.123:7005']);
    $obj_cluster->set('name1', '1111');
    $obj_cluster->set('name2', '2222');
    $obj_cluster->set('name3', '3333');
    $name1 = $obj_cluster->get('name1');
    $name2 = $obj_cluster->get('name2');
    $name3 = $obj_cluster->get('name3');
    var_dump($name1);
    var_dump($name2);
    var_dump($name3);

输出


redis3.2.8集群搭建
image.png

可以保存和获取,测试没问题,最后注意redis版本尽量相同,出现问题可以先flushall 和 cluster reset 清空节点再重试
停止redis实例
/usr/local/redis/bin/redis-cli -h 192.168.1.111 -p 7000 shutdown
/usr/local/redis/bin/redis-cli -h 192.168.1.111 -p 7001 shutdown
/usr/local/redis/bin/redis-cli -h 192.168.1.111 -p 7002 shutdown
/usr/local/redis/bin/redis-cli -h 192.168.1.123 -p 7003 shutdown
/usr/local/redis/bin/redis-cli -h 192.168.1.123 -p 7004 shutdown
/usr/local/redis/bin/redis-cli -h 192.168.1.123 -p 7005 shutdown