1. 安装单机Redis
安装步骤:
1.1 下载redis
官网下载3.0.0版本,之前几的版本不支持集群模式
下载地址:http://download.redis.io/releases/redis-3.0.0.tar.gz
1.2 首先需要安装gcc
yum install gcc
1.3 创建目录
cd /usr/
mkdir soft
1.4 拷贝jar包并解压
[root@worker01 ~]# cp redis-3.0.0.tar.gz /usr/soft/
[root@worker01 ~]# cd /usr/soft/
[root@worker01 soft]# ls
redis-3.0.0.tar.gz
[root@worker01 soft]# tar -xf redis-3.0.0.tar.gz
[root@worker01 soft]# ls
redis-3.0.0 redis-3.0.0.tar.gz
[root@worker01 soft]#
1.5 编译
[root@worker01 soft]# cd redis-3.0.0
[root@worker01 redis-3.0.0]# ls
00-RELEASENOTES CONTRIBUTING deps Makefile README runtest runtest-sentinel src utils
BUGS COPYING INSTALL MANIFESTO redis.conf runtest-cluster sentinel.conf tests
[root@worker01 redis-3.0.0]# make
安装成功如下:
1.6 创建目录并拷贝redis.conf
[root@worker01 src]# mkdir -p /usr/local/redis/etc
[root@worker01 src]# mkdir -p /usr/local/redis/bin
[root@worker01 redis-3.0.0]# cp /usr/soft/redis-3.0.0/redis.conf /usr/local/redis/etc/
[root@worker01 redis-3.0.0]#
1.7 拷贝文件到bin目录
[root@worker01 src]# mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin
[root@worker01 src]# pwd
/usr/soft/redis-3.0.0/src
[root@worker01 src]#
1.8 修改后代模式启动
[root@worker01 redis]# cd etc
[root@worker01 etc]# vi redis.conf
1.9 启动redis
[root@worker01 redis]# bin/redis-server etc/redis.conf
1.10 验证启动redis
[root@worker01 redis]# ps -ef|grep redis
root 8333 1 0 22:11 ? 00:00:00 bin/redis-server *:6379
root 8338 4715 0 22:12 pts/2 00:00:00 grep --color=auto redis
[root@worker01 redis]#
1.11 进入redis客户端查看
/usr/local/redis/bin/redis-cli
2. Redis集群搭建
[root@worker01 local]# mkdir -p /usr/local/redis-cluster
[root@worker01 local]# cd redis-cluster
[root@worker01 redis-cluster]# mkdir 8001
[root@worker01 redis-cluster]# mkdir 8002
[root@worker01 redis-cluster]# mkdir 8003
[root@worker01 redis-cluster]# mkdir 8004
[root@worker01 redis-cluster]# mkdir 8005
[root@worker01 redis-cluster]# mkdir 8006
2.1 修改端口和虚拟主机ip等配置信息
cd /usr/local/redis-cluster/8001/
vi redis.conf
#在redis.conf修改以下内容
port 8001
bind 192.168.179.128
dir /usr/local/redis-cluster/8001/
cluster-enabled yes
cluster-config-file nodes-8001.conf
cluster-node-timeout 5000
appendonly yes
2.2 拷贝配置信息
root@worker01 8001]# cd /usr/local/redis-cluster/8001
[root@worker01 8001]# cp redis.conf ../8002
[root@worker01 8001]# cp redis.conf ../8003
[root@worker01 8001]# cp redis.conf ../8004
[root@worker01 8001]# cp redis.conf ../8005
[root@worker01 8001]# cp redis.conf ../8006
2.3 替换配置文件信息
[root@worker01 ~]# cd /usr/local/redis-cluster/
[root@worker01 redis-cluster]# vi 8002/redis.conf
:%s/8001/8002/g
[root@worker01 redis-cluster]# vi 8003/redis.conf
:%s/8001/8003/g
[root@worker01 redis-cluster]# vi 8004/redis.conf
:%s/8001/8004/g
[root@worker01 redis-cluster]# vi 8005/redis.conf
:%s/8001/8005/g
[root@worker01 redis-cluster]# vi 8006/redis.conf
:%s/8001/8006/g
2.4 启动redis-server
[root@worker01 redis-cluster]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/8001/redis.conf
[root@worker01 redis-cluster]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/8002/redis.conf
[root@worker01 redis-cluster]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/8003/redis.conf
[root@worker01 redis-cluster]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/8004/redis.conf
[root@worker01 redis-cluster]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/8005/redis.conf
[root@worker01 redis-cluster]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/8006/redis.conf
由于redis集群需要使用ruby命令,所以我们需要安装ruby
yum install ruby
yum install rubygems
#本地安装
gem install -l redis-3.0.0.gem
在redis3的安装目录下执行redis-trib.rb 命令创建整个redis的集群
cd /usr/soft/redis-3.0.0/src
./redis-trib.rb create --replicas 1 192.168.179.128:8001 192.168.179.128:8002 192.168.179.128:8003 192.168.179.128:8004 192.168.179.128:8005 192.168.179.128:8006
验证集群
[root@worker01 src]# /usr/local/redis/bin/redis-cli -c -h 192.168.179.128 -p 8001
127.0.0.1:8001> cluster info
127.0.0.1:8001> cluster nodes
192.168.179.128:8001> set name zhuge
-> Redirected to slot [5798] located at 192.168.179.128:8002
OK
192.168.179.128:8002> get name
"zhuge"
192.168.179.128:8002> set name1 zhuge2
-> Redirected to slot [12933] located at 192.168.179.128:8003
OK
192.168.179.128:8003> get name1
"zhuge2"
192.168.179.128:8003> set name2 zhuge3
-> Redirected to slot [742] located at 192.168.179.128:8001
OK
192.168.179.128:8001> get name2
"zhuge3"
192.168.179.128:8001> get name1
-> Redirected to slot [12933] located at 192.168.179.128:8003
"zhuge2"
192.168.179.128:8003>
3. Java操作Redis集群
借助redis的java客户端redis可以操作以上集群
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
package com.itheima.redis;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
public class RedisCluster {
public static void main(String[] args) throws IOException {
Set<HostAndPort> jedisclusterNode=new HashSet<HostAndPort>();
jedisclusterNode.add(new HostAndPort("192.168.179.128",8001));
jedisclusterNode.add(new HostAndPort("192.168.179.128",8002));
jedisclusterNode.add(new HostAndPort("192.168.179.128",8003));
jedisclusterNode.add(new HostAndPort("192.168.179.128",8004));
jedisclusterNode.add(new HostAndPort("192.168.179.128",8005));
jedisclusterNode.add(new HostAndPort("192.168.179.128",8006));
JedisPoolConfig config=new JedisPoolConfig();
config.setMaxTotal(100);
config.setMaxIdle(10);
config.setTestOnBorrow(true);
JedisCluster jedisCluster=new JedisCluster(jedisclusterNode,6000,10,config);
System.out.println(jedisCluster.set("student","aaron"));
System.out.println(jedisCluster.set("age","18"));
System.out.println(jedisCluster.get("student"));
System.out.println(jedisCluster.get("age"));
//jedisCluster.close();
}
}
运行java程序查看
命令行测试
关闭8001 redis服务并查看
[root@worker01 src]# /usr/local/redis/bin/redis-cli -c -h 192.168.179.128 -p 8001 shutdown
[root@worker01 src]# ps -ef|grep redis
由图可知8001 已经设置为 master fail, 8004重新变成主节点
[root@worker01 src]# /usr/local/redis/bin/redis-cli -c -h 192.168.179.128 -p 8002
192.168.179.128:8002> cluster nodes