首页 > 其他分享 >SpringBoot集成Jedis

SpringBoot集成Jedis

时间:2024-10-24 17:23:48浏览次数:8  
标签:集成 SpringBoot spring redis Jedis pool jedis public jedisPoolConfig

SpringBoot集成Jedis

Jedis/Redis/JDK版本关系

Jedis version Supported Redis versions JDK Compatibility
3.9+ 5.0 to 6.2 Family of releases 8, 11
>= 4.0 Version 5.0 to 7.2 Family of releases 8, 11, 17
>= 5.0 Version 6.0 to current 8, 11, 17, 21
>= 5.2 Version 7.2 to current 8, 11, 17, 21

前提条件:

  • 已创建SpringBoot项目

操作步骤

1、standalone连接配置

  • 在Pom.xml文件中增加spring-boot-starter-data-redis依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    <!-- springboot2.0以上默认使用lettuce-core -->
    <exclusions>
        <exclusion>
            <groupId>io.lettuce</groupId>
            <artifactId>lettuce-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!-- 原本使用jedis5.2.0,但由于找不到 redis.clients.jedis.JedisShardInfo,将版本改为3.9.0 -->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.9.0</version>
    <type>jar</type>
</dependency>
  • 创建配置类
@Configuration
public class AppConfig {
    @Bean
    JedisConnectionFactory redisConnectionFactory() {
        RedisStandaloneConfiguration config = new RedisStandaloneConfiguration("192.168.1.19", 6379); // 192.168.1.19为局域网单机redis主机IP
        return new JedisConnectionFactory(config);
    }

    @Bean
    RedisTemplate<String, String> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, String> template = new RedisTemplate<>();
        template.setConnectionFactory(redisConnectionFactory);
        return template;
    }
}
  • 创建测试类
@SpringBootTest
public class RedisOperationTest {
    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public void setValue() {
        redisTemplate.opsForValue().set("tayun", "1234");
    }
}

2、连接池配置

  • 创建application.yml文件,配置redis连接池属性
spring:
  redis:
    host: 192.168.1.19
    port: 6379
    database: 0
    jedis:
      pool:
        max-active: 10
        max-wait: 60
        max-idle: 10
        min-idle: 0
        max-wait-millis: 1500
    timeout: 30000
  • 创建配置类
@Configuration
@PropertySource("classpath:application.yml")
public class AppConfig {

    @Value("${spring.redis.jedis.pool.max-idle}")
    private Integer maxIdle;

    @Value("${spring.redis.jedis.pool.max-wait-millis}")
    private int maxWaitMillis;

    @Value("${spring.redis.jedis.pool.max-active}")
    private Integer maxActive;

    @Value("${spring.redis.jedis.pool.min-idle}")
    private Integer minIdle;

    @Value("${spring.redis.timeout}")
    private Integer timeout;

    public JedisPoolConfig jedisPoolConfig() {
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxIdle(maxIdle);
        jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
        jedisPoolConfig.setMaxTotal(maxActive);
        jedisPoolConfig.setMinIdle(minIdle);
        jedisPoolConfig.setBlockWhenExhausted(false);
        // 是否启用pool的jmx管理功能, 默认true
        jedisPoolConfig.setJmxEnabled(true);
        return jedisPoolConfig;
    }

    @Bean
    public JedisPool jedisPool() {
        return new JedisPool(jedisPoolConfig(), "192.168.1.19", 6379, timeout);
    }
}
  • 创建测试类
@SpringBootTest
public class RedisOperationTest {
    @Autowired
    private JedisPool jedisPool;

    @Test
    public void setValue() {
        Jedis jedis = null;
        try {
            jedis = jedisPool.getResource();
            jedis.setnx("tayun2", "1234");

        } catch (Exception e) {
            throw new RuntimeException("向Redis中存值失败!");
        } finally {
            if (jedis != null) {
                jedis.close();
            }
        }
    }
}

附:

1.Could not get a resource from the pool

报错信息截取:

org.springframework.data.redis.RedisConnectionFailureException: Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool

最终解决:

端口号写错导致,修改正确端口号正常

参考

标签:集成,SpringBoot,spring,redis,Jedis,pool,jedis,public,jedisPoolConfig
From: https://www.cnblogs.com/litayun/p/18500003

相关文章

  • springboot-实现excle文件导出的单元格相同内容合并
    导出excle文件中的单元格有些需要合并如何操作例如:左边的表格想合并单元格成右边的表格更加便于观看        一、依赖文件<!--excle操作--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId>......
  • SpringBoot入门到精通(十三)日志:别小看它,否则吃亏的是自己!学会你也可以设计架构
    别小看他,当你面对的时候,就会知道,多么痛的领悟!如何在SpringBoot中使用Logback记录详细的日志?整合LogBack,Log4J...等,是不是很多方法!但需要注意,我讲的可能和你是一样的,但也是不一样的。常见日志级别:高---低排列TRACE:描述:最详细的日志级别,通常用于开发和调试阶段......
  • 探索现代软件开发中的持续集成与持续交付(CI/CD)实践
    探索现代软件开发中的持续集成与持续交付(CI/CD)实践随着软件开发的飞速进步,现代开发团队已经从传统的开发模式向更加自动化和灵活的开发流程转变。持续集成(CI)与持续交付(CD)成为当下主流的开发模式。这些实践通过自动化的构建、测试和发布流程,使开发团队能够更高效地交付......
  • 谷歌地图 | 与 Android 版导航 SDK 集成的最佳实践
    谷歌最近宣布了导航SDK,它可以让您将熟悉的Google地图逐向导航体验无缝集成到您的Android和iOS应用程序中。这篇博文概述了一些最佳实践,您可以使用这些实践为您的Android应用程序使用导航SDK构建流畅、一致且可靠的导航体验。 与导航地图交互与NavigationSDK集......
  • 用友BIP数据集成到旺店通·企业奇门:YS其他入库单对接方案
    用友BIP数据集成到旺店通·企业奇门:YS其他入库单对接方案在企业的日常运营中,数据的高效流转和准确处理至关重要。本文将分享一个具体的系统对接集成案例,即如何将用友BIP平台上的YS其他入库单数据无缝对接到旺店通·企业奇门,实现云仓管理中的高效数据同步。本次集成方案名为“YS......
  • 吉客云数据集成到金蝶云星空:盘盈入库单对接方案
    吉客云数据集成到金蝶云星空:盘盈入库单对接方案在企业资源管理中,数据的准确性和实时性至关重要。本文将分享一个具体的系统对接集成案例,即如何将吉客云中的盘盈入库单数据高效、可靠地集成到金蝶云星空中,形成盘盈单。为了实现这一目标,我们采用了数据集成平台,通过其强大的数据处......
  • 5金蝶生产订单对接商城:从金蝶云星空到MySQL的数据集成方案
    5金蝶生产订单对接商城:从金蝶云星空到MySQL的数据集成方案在企业信息化系统中,数据的高效流动和准确处理是业务成功的关键。本文将分享一个实际运行的技术案例——如何通过数据集成平台,将金蝶云星空中的生产订单数据无缝对接到MySQL数据库中,实现业务流程的自动化与优化。本次集......
  • 基于SpringBoot和Vue的地方美食分享与推荐网站的设计与实现(源码+定制+开发)地方美食推
    博主介绍:  ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W+粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台的优质作者。通过长期分享和实战指导,我致力于帮助更多学生......
  • SpringBoot助力学生评奖评优系统的现代化
    3系统分析3.1可行性分析通过对本学生评奖评优管理系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。3.1.1技术可行性本学生评奖评优管理系统采用SSM框架,JAVA作为开发语言,是基于WEB平......
  • springboot068桂林旅游景点导游平台(论文+源码)_kaic
    桂林旅游景点导游平台摘要随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了桂林旅游景点导游平台的开发全过程。通过分析桂林旅游景点导游平台管理的不足,创建了一个计算机管理桂林旅游景点导游平台的方案。文章介绍了桂林旅游......