• 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;
        }
    }
    

      

      

  • 相关阅读:
    Spring基础知识点总结
    秒懂设计模式--代理模式(proxy)
    秒懂设计模式--工厂模式
    秒懂设计模式--适配器模式
    秒懂设计模式--装饰者模式
    秒懂设计模式--观察者模式
    单例模式的几种实现
    springboot2.0+spring cloud+eureka搭建微服务步骤
    字符串排序算法
    bitbucket的简单使用
  • 原文地址:https://www.cnblogs.com/-beyond/p/10991428.html
Copyright © 2020-2023  润新知