一、安装redis 1.下载redis到linux下 wget http://download.redis.io/releases/redis-3.2.8.tar.gz 2.解压redis  tar -zxvf redis-3.2.8.tar.gz 3.编译安装redis ①进入redis目录下执行'make'命令 ②若提示 gcc:命令未找到错误,则需要安装gcc: yum install gcc ③进入src目录下,执行如下命令:

make install PREFIX=/usr/local/redis


二、配置redis集群 1.在/usr/local下创建redis-cluster文件夹,在redis-cluster中创建7001、7002、7003、7004、7005、7006共六个文件夹 2.在各自的文件夹下配置各自的redis.conf文件 ①修改bind为实际ip地址 ②修改port为对应的端口号(如果redis在不同的机器上,port可以不用修改) ③修改pidfile(如果实在不同的机器上,可以不用修改) ④修改dir(如果实在不同的机器上,可以不用修改) ⑤设置cluster-enabled为yes ⑥修改cluster-config-file(如果实在不同的机器上,可以不用修改) 3.启动所有的redis实例

bin/redis-server 700*/redis.conf


4.安装ruby

yum install ruby rubygems 
  gem install redis

5.创建集群

bin/redis-trib.rb create --replicas 1 192.168.0.111:7001 192.168.0.111:7002 192.168.0.111:7003 192.168.0.111:7004 192.168.0.111:7005 192.168.0.111:7006


6.查看集群状态

bin/redis-cli -c -h 192.168.0.111 -p 7001 //随机进入一个redis节点中 
  cluster info //查看集群信息 
  cluster nodes //查看节点信息



7.集群的增减节点 ①增加主节点 redis-trib.rb add-node 192.168.0.111:7007 192.168.0.111:7001 redis-trib.rb reshard 192.168.0.111:7001 //重新分配slot槽 ②增加从节点 redis-trib.rb add-node 192.168.0.111:7008 192.168.0.111:7001 redis-cli -c -h 192.168.0.111 -p 7008 //进入7008这个节点 cluster replicate <master节点id> ③移除从节点 redis-trib.rb del-node 192.168.0.111:7008 <7008节点id> ④移除主节点 redis-trib.rb reshard 192.168.0.111:7007 //从新分配slot槽 redis-trib.rb del-node 192.168.0.111:7007 <7007节点id> //移除节点

8.在spring代码中使用redis ①基于xml方式的配置

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="  >  <!-- Jedis链接池配置,

注意:Jedis版本建议升级到最新 -->

<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"><property name="maxTotal" value="100" /><property name="maxIdle" value="20" /><property name="minIdle" value="10" /><property name="blockWhenExhausted" value="true"></property><property name="maxWaitMillis" value="3000" /><property name="testOnBorrow" value="false" /><property name="testOnReturn" value="false" /><property name="testWhileIdle" value="true" /><property name="minEvictableIdleTimeMillis" value="60000" /><property name="timeBetweenEvictionRunsMillis" value="30000" /><property name="numTestsPerEvictionRun" value="-1" /></bean>  <!-- JedisCluster --><bean id="jedisCluster" class="redis.clients.jedis.JedisCluster"><constructor-arg index="0"><set><bean class="redis.clients.jedis.HostAndPort"><constructor-arg index="0" value="192.168.1.111" /><constructor-arg index="1" value="7111" type="int" /></bean><bean class="redis.clients.jedis.HostAndPort"><constructor-arg index="0" value="192.168.1.112" /><constructor-arg index="1" value="7112" type="int" /></bean><bean class="redis.clients.jedis.HostAndPort"><constructor-arg index="0" value="192.168.1.113" /><constructor-arg index="1" value="7113" type="int" /></bean><bean class="redis.clients.jedis.HostAndPort"><constructor-arg index="0" value="192.168.1.114" /><constructor-arg index="1" value="7114" type="int" /></bean><bean class="redis.clients.jedis.HostAndPort"><constructor-arg index="0" value="192.168.1.115" /><constructor-arg index="1" value="7115" type="int" /></bean><bean class="redis.clients.jedis.HostAndPort"><constructor-arg index="0" value="192.168.1.116" /><constructor-arg index="1" value="7116" type="int" /></bean></set></constructor-arg><constructor-arg index="1" value="2000" type="int"></constructor-arg><constructor-arg index="2" value="100" type="int"></constructor-arg><constructor-arg index="3" ref="jedisPoolConfig"></constructor-arg></bean>  </beans> 
  
 
 ②基于javaConfig的配置 
 package com.aliyun.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;

import java.util.HashSet;
import java.util.Set;

/**
 * 
 */
@Configuration
public class JedisConfig {

    @Bean
    public JedisPoolConfig poolConfig() {
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        poolConfig.setMinIdle(10);
        poolConfig.setMaxIdle(20);
        poolConfig.setMaxTotal(100);
        poolConfig.setMaxWaitMillis(3000);
        poolConfig.setBlockWhenExhausted(true);
        poolConfig.setTestOnBorrow(false);
        poolConfig.setTestOnReturn(false);
        poolConfig.setTestWhileIdle(true);
        poolConfig.setMinEvictableIdleTimeMillis(60000);
        poolConfig.setTimeBetweenEvictionRunsMillis(30000);
        poolConfig.setNumTestsPerEvictionRun(-1);
        return poolConfig;
    }

    @Bean
    public JedisCluster jedisCluster() {
        Set<HostAndPort> nodes = new HashSet<HostAndPort>();
        nodes.add(new HostAndPort("192.168.188.130", 7001));
        nodes.add(new HostAndPort("192.168.188.130", 7002));
        nodes.add(new HostAndPort("192.168.188.130", 7003));
        nodes.add(new HostAndPort("192.168.188.130", 7004));
        nodes.add(new HostAndPort("192.168.188.130", 7005));
        nodes.add(new HostAndPort("192.168.188.130", 7006));
        nodes.add(new HostAndPort("192.168.188.130", 7007));
        nodes.add(new HostAndPort("192.168.188.130", 7008));
        JedisCluster cluster = new
                JedisCluster(nodes, 2000, 100, poolConfig());
        return cluster;
    }

}


③测试

@Autowired
private JedisCluster jedisCluster;



@GetMapping("/testRedis")
@ResponseBody
public String testRedis() {
    String name = jedisCluster.get("name");
    return name;
}