redis-spring连接

1.配置redis连接数据


package com.slb.elasticSearch.config;


import org.springframework.beans.factory.annotation.Value;

import org.springframework.context.annotation.Configuration;

import org.springframework.context.annotation.PropertySource;


/**

 * Created by sunlibao on 2018/6/25.

 */

@Configuration

@PropertySource("classpath:redis.properties")

public class RedisConfig {


    /**

     * 集群节点

     */

    @Value("${redis.cluster.nodes}")

    private String nodes;

    /**

     * 集群模式的最大重试数

     */

    @Value("${redis.cluster.maxRedirects}")

    private int maxRedirects;


    /**

     * 集群的链接模式

     */

    @Value("${redis.cluster.mode}")

    private String mode;



    public String getNodes() {

        return nodes;

    }


    public void setNodes(String nodes) {

        this.nodes = nodes;

    }


    public int getMaxRedirects() {

        return maxRedirects;

    }


    public void setMaxRedirects(int maxRedirects) {

        this.maxRedirects = maxRedirects;

    }


    public String getMode() {

        return mode;

    }


    public void setMode(String mode) {

        this.mode = mode;

    }

}


2.创建数据连接,连接中连接redis集群的方式和普通连接的方式不同。



package com.slb.elasticSearch.config;


import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.data.redis.connection.RedisClusterConfiguration;

import org.springframework.data.redis.connection.RedisConnectionFactory;

import org.springframework.data.redis.connection.RedisNode;

import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;

import org.springframework.data.redis.core.RedisTemplate;

import org.springframework.data.redis.core.StringRedisTemplate;

import org.springframework.data.redis.serializer.StringRedisSerializer;

import redis.clients.jedis.HostAndPort;

import redis.clients.jedis.JedisCluster;

import redis.clients.jedis.JedisPoolConfig;


import java.util.LinkedHashSet;

import java.util.LinkedList;

import java.util.List;

import java.util.Set;


/**

 * Created by sunlibao on 2018/6/25.

 */

@Configuration

public class RedisConntion {


    /**

     * 分布式配置

     */

    @Autowired

    private RedisConfig defaultRedisConfig;


    @Bean

    public RedisConnectionFactory jedisConnectionFactory() {


        List<RedisNode> redisNodes = new LinkedList<RedisNode>();

        String nodes = defaultRedisConfig.getNodes();

        for (String nodeStr : nodes.split(",")) {

            String[] node = nodeStr.split(":");

            String nodeAddr = node[0];

            Integer nodePort = Integer.parseInt(node[1]);

            RedisNode redisNode = new RedisNode(nodeAddr, nodePort);

            redisNodes.add(redisNode);

        }

        RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration();

        redisClusterConfiguration.setClusterNodes(redisNodes);

        redisClusterConfiguration.setMaxRedirects(defaultRedisConfig.getMaxRedirects());


        return new JedisConnectionFactory(redisClusterConfiguration);

    }



    @Bean

    public JedisCluster jedisCluster(){


        JedisPoolConfig poolConfig = new JedisPoolConfig();

        // 最大连接数

        poolConfig.setMaxTotal(1);

        // 最大空闲数

        poolConfig.setMaxIdle(1);

        // 最大允许等待时间,如果超过这个时间还未获取到连接,则会报JedisException异常:

        // Could not get a resource from the pool

        poolConfig.setMaxWaitMillis(1000);

        Set<HostAndPort> nodes = new LinkedHashSet<HostAndPort>();


        String nodesStr = defaultRedisConfig.getNodes();

        for (String nodeStr : nodesStr.split(",")) {

            String[] node = nodeStr.split(":");

            String nodeAddr = node[0];

            Integer nodePort = Integer.parseInt(node[1]);

            nodes.add(new HostAndPort(nodeAddr, nodePort));

        }


        JedisCluster cluster =  new JedisCluster(nodes, poolConfig);


        return cluster;

    }




    @Bean

    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory jedisConnectionFactory) {

        RedisTemplate redisTemplate = new RedisTemplate();

        redisTemplate.setKeySerializer(new StringRedisSerializer());

        redisTemplate.setHashKeySerializer(new StringRedisSerializer());

        redisTemplate.setConnectionFactory(jedisConnectionFactory);

        return redisTemplate;

    }


    @Bean

    public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory jedisConnectionFactory) {

        StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();

        stringRedisTemplate.setConnectionFactory(jedisConnectionFactory);

        return stringRedisTemplate;

    }




}