Redis集群中应该至少有三个节点,每个节点有一备份节点。需要6台服务器。做试验我们可以搭建伪分布式,需要6个redis实例。命名redis1到redis6,端口分别分配9001到9006
环境: CentOS
准备一个实例:
第一步:安装gcc编译环境
yum install gcc-c++
第二步:解压
tar -zxvf redis-3.2.0.tar.gz
第三步:make
第四步:make install PREFIX=/usr/local/redis
第五步:复制redis-3.2.0/redis.conf到/usr/local/redis的安装目录
修改redis.conf, 改deamonize yes
redis集群搭建
第一步:创建目录/usr/local/redis_cluster ,复制6个/usr/local/redis到/usr/local/redis_cluster,命名redis1到redis6
第二步:修改每个redis实例下配置文件redis.conf 打开Cluster-enable yes前面的注释,port改成不一样7001到7006
第三步:需要一个ruby脚本。在redis源码文件夹下的redis-3.2.0/src目录下。redis-trib.rb
第四步:把redis-trib.rb文件复制到到/usr/local/redis-cluster目录下。
第五步:执行ruby脚本之前,需要安装ruby环境。
1、yum install ruby
2、yum install rubygems
3、安装redis-trib.rb运行依赖的ruby的包。
gem install redis-3.0.0.gem
第六步:启动所有的redis实例。
./redis-server redis.conf
第七步:使用redis-trib.rb创建集群。
./redis-trib.rb create --replicas 1 192.168.1.150:9001 192.168.1.150:9002 192.168.1.150:9003 192.168.1.150:9004 192.168.1.150:9005 192.168.1.150:9006
用Jedis连接redis集群
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.0.0</version>
</dependency>
@Test
public void testJedisCluster() throws Exception {
//创建一个JedisCluster对象
Set<HostAndPort> nodes = new HashSet<>();
nodes.add(new HostAndPort("192.168.1.150", 9001));
nodes.add(new HostAndPort("192.168.1.150", 9002));
nodes.add(new HostAndPort("192.168.1.150", 9003));
nodes.add(new HostAndPort("192.168.1.150", 9004));
nodes.add(new HostAndPort("192.168.1.150", 9005));
nodes.add(new HostAndPort("192.168.1.150", 9006));
//在nodes中指定每个节点的地址
//jedisCluster在系统中是单例的。
JedisCluster jedisCluster = new JedisCluster(nodes);
jedisCluster.set("name", "zhangsan");
jedisCluster.set("value", "100");
String name = jedisCluster.get("name");
String value = jedisCluster.get("value");
System.out.println(name);
System.out.println(value);
//系统关闭时关闭jedisCluster
jedisCluster.close();
}