SpringBoot整合Jedis

 

 

一、说明

  Spring中可以配置RedisTemplate来操作Redis,但是本文中并没有使用RedisTemplate,而是单纯的使用Spring的IoC,单独创建一个配置类,用来配置Redis,然后在需要进行Redis操作的地方,注入配置的Jedis即可。

  也就是说,本文中的内容,单纯地使用Jedis,其实和普通java项目配置Redis并没有太多的不同。

 

 

二、JedisCluster集群配置

  集群配置,需要先有一个Redis集群,可以参考:Redis集群搭建使用Jedis操作Redis

2.1、导入依赖

  仍旧使用上面的依赖,不需要导入spring-boot-starter-cache、spring-boot-starter-data-redis,只需要导入jedis即可。

<dependency>
	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
	<version>3.2.0</version>
</dependency>

  

2.2、配置文件

  在配置文件中加入一下内容:

# redis集群的节点信息
redis.cluster.nodes=192.168.1.3:6379,192.168.1.4:6379,192.168.1.5:6379
# redis连接池的配置
redis.cluster.pool.max-active=8
redis.cluster.pool.max-idle=5
redis.cluster.pool.min-idle=3

  

2.3、创建配置类

  下面是示例代码:

package cn.ganlixin.ssm.config;

import org.apache.commons.collections4.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
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.Set;
import java.util.stream.Collectors;

@Configuration
public class RedisClusterConfig {

    private static final Logger log = LoggerFactory.getLogger(RedisClusterConfig.class);

    @Value("${redis.cluster.nodes}")
    private Set<String> redisNodes;

    @Value("${redis.cluster.pool.max-active}")
    private int maxTotal;

    @Value("${redis.cluster.pool.max-idle}")
    private int maxIdle;

    @Value("${redis.cluster.pool.min-idle}")
    private int minIdle;

    // 初始化redis配置
    @Bean
    public JedisCluster redisCluster() {

        if (CollectionUtils.isEmpty(redisNodes)) {
            throw new RuntimeException();
        }

        // 设置redis集群的节点信息
        Set<HostAndPort> nodes = redisNodes.stream().map(node -> {
            String[] nodeInfo = node.split(":");
            if (nodeInfo.length == 2) {
                return new HostAndPort(nodeInfo[0], Integer.parseInt(nodeInfo[1]));
            } else {
                return new HostAndPort(nodeInfo[0], 6379);
            }
        }).collect(Collectors.toSet());

        // 配置连接池
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxTotal(maxTotal);
        jedisPoolConfig.setMaxIdle(maxIdle);
        jedisPoolConfig.setMinIdle(minIdle);

        // 创建jediscluster,传入节点列表和连接池配置
        JedisCluster cluster = new JedisCluster(nodes, jedisPoolConfig);
        log.info("finish jedis cluster initailization");

        return cluster;
    }
}

  

2.4、测试使用

  使用的时候,只需要注入redisCluster即可。

package cn.ganlixin.ssm.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import redis.clients.jedis.JedisCluster;

import javax.annotation.Resource;

@RestController
@RequestMapping("redis")
public class RedisController {

    @Resource
    private JedisCluster redisCluster;

    @RequestMapping("test")
    public String test() {
        redisCluster.set("hello", "world");

        String val = redisCluster.get("hello");
        return val;
    }
}

  

  

 

posted @ 2019-06-08 19:22  寻觅beyond  阅读(...)  评论(...编辑  收藏
顶部