国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

詳細(xì)解決redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool

這篇具有很好參考價(jià)值的文章主要介紹了詳細(xì)解決redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1. 復(fù)現(xiàn)錯(cuò)誤


今天從gitlab上下載本公司的項(xiàng)目,但在啟動時(shí)報(bào)出如下錯(cuò)誤:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'redisKeyExpirationListener' defined in file [D:\Software\...\RedisKeyExpirationListener.class]: Invocation of init method failed; nested exception is 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
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866)
	......
Caused by: 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
	at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.fetchJedisConnector(JedisConnectionFactory.java:198)
	at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.getConnection(JedisConnectionFactory.java:345)
	at org.springframework.data.redis.listener.KeyspaceEventMessageListener.init(KeyspaceEventMessageListener.java:80)
	at org.springframework.data.redis.listener.KeyspaceEventMessageListener.afterPropertiesSet(KeyspaceEventMessageListener.java:132)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)
	... 59 more
Caused by: redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
	at redis.clients.util.Pool.getResource(Pool.java:53)
	at redis.clients.jedis.JedisPool.getResource(JedisPool.java:226)
	at redis.clients.jedis.JedisPool.getResource(JedisPool.java:16)
	at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.fetchJedisConnector(JedisConnectionFactory.java:191)
	... 64 more
Caused by: redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: connect timed out
	at redis.clients.jedis.Connection.connect(Connection.java:207)
	at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:93)
	at redis.clients.jedis.BinaryJedis.connect(BinaryJedis.java:1767)
	at redis.clients.jedis.JedisFactory.makeObject(JedisFactory.java:106)
	at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:868)
	at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:435)
	at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363)
	at redis.clients.util.Pool.getResource(Pool.java:49)
	... 67 more
Caused by: java.net.SocketTimeoutException: connect timed out
	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at redis.clients.jedis.Connection.connect(Connection.java:184)
	... 74 more

具體的錯(cuò)誤信息為redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool。

2. 分析錯(cuò)誤


根據(jù)上述報(bào)錯(cuò)信息可知,這是redis出現(xiàn)了錯(cuò)誤。

  1. 首先,檢查我的redis的配置信息,如下代碼所示:
########################################
###
### 2.redis的配置
###
########################################
cache:
  redis:
    db: 12
    enable: true
    hostName: 127.0.0.1
    password: test
    port: 6379

據(jù)此可以看出,我的redis配置沒有問題。

  1. redis配置既然沒有問題,則去檢查Jedis ConnectionFactory的配置是否存在問題,如下代碼所示:
<!-- Jedis ConnectionFactory -->
<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
    <property name="hostName" value="${cache.redis.hostName}"/>
    <property name="port" value="${cache.redis.port}"/>
    <property name="password" value="${cache.redis.password}"/>
    <property name="database" value="${cache.redis.db}"/>
    <property name="usePool" value="true"/>
    <property name="poolConfig">
        <!-- jedisPoolConfig -->
        <bean class="redis.clients.jedis.JedisPoolConfig">
            <property name="maxTotal" value="100"/>
            <property name="minIdle" value="20"/>
            <property name="maxWaitMillis" value="10000"/>
        </bean>
    </property>
</bean>

由上代碼所示,Jedis ConnectionFactory的配置也沒有問題。

  1. 繼續(xù)分析錯(cuò)誤信息,錯(cuò)誤信息說Error creating bean with name 'redisKeyExpirationListener'...,即無法創(chuàng)建redisKeyExpirationListener的bean對象,則去檢查RedisKeyExpirationListener類,如下代碼所示:
/**
 * @author super先生
 * @datetime 2023/3/12 16:30
 * @desc  這是對redis key過期的監(jiān)聽器
 */
@Component
@Conditional({RedisCondition.class})
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
  private Logger LOG = LoggerFactory.getLogger(this.getClass());

  @Autowired
  private StringRedisTemplate redisTemplate;
  @Autowired
  private ProjectDao projectDao;

  public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
      super(listenerContainer);
  }

  @Override
  public void onMessage(Message message, byte[] pattern) {
      String key = message.toString();
      LOG.info("{} 緩存已到期", key);

      String[] split = key.split("_");
      if ("timer".equals(split[1])) {
          //
          if (!redisTemplate.hasKey(split[0])) {
              // 如果沒有key,刪除定時(shí)器key
              redisTemplate.delete(key);
              LOG.info("{} 對應(yīng)的數(shù)據(jù)不存在,已刪除", key);
              return;
          }
          String value = redisTemplate.opsForValue().get(split[0]);
          DashboardBoard dashboardBoard = JSONObject.parseObject(value, DashboardBoard.class);
          if (dashboardBoard == null) {
              // 重新設(shè)置key
              redisTemplate.opsForValue().set(split[0] + "_timer", "", 5, TimeUnit.MINUTES);
              LOG.info("{} 緩存重設(shè)", split[0]);
              return;
          }

          try {
              projectDao.update(dashboardBoard);
              redisTemplate.delete(split[0]);
              LOG.info("數(shù)據(jù)持久化, {} 緩存刪除", split[0]);
          } catch (Exception e) {
              e.printStackTrace();
              // 重新設(shè)置key
              redisTemplate.opsForValue().set(split[0] + "_timer", "", 5, TimeUnit.MINUTES);
              LOG.info("{} 緩存重設(shè)", split[0]);
          }
      }
  }
}

經(jīng)過對RedisKeyExpirationListener類的檢查,沒有返現(xiàn)任何問題。

  1. 繼續(xù)分析上述錯(cuò)誤,直至看到connect timed out錯(cuò)誤信息。

connect timed out表示連接超時(shí),也就是說,我的redis沒有啟動。

我經(jīng)過反復(fù)檢查后,發(fā)現(xiàn)我的redis確實(shí)沒有啟動。

3. 解決錯(cuò)誤


由于我沒有啟動redis,啟動redis即可,如下圖所示:

程序包redis.clients.jedis不存在,免費(fèi)專欄,redis,java,數(shù)據(jù)庫,后端,spring

重新啟動項(xiàng)目,即可成功運(yùn)行,如下圖所示:

程序包redis.clients.jedis不存在,免費(fèi)專欄,redis,java,數(shù)據(jù)庫,后端,spring

4. 解決此錯(cuò)誤的其他辦法


我的是因?yàn)闆]有啟動redis,導(dǎo)致了這個(gè)錯(cuò)誤:Could not get a resource from the pool。

如果你的redis啟動了,但仍報(bào)出這個(gè)錯(cuò)誤,可以參考如下解決方法,來解決你的錯(cuò)誤:

  1. 檢查redis是否崩潰(宕機(jī))。

  2. 檢查redis的連接池

輸入如下命令,進(jìn)入redis服務(wù)器:

./redis-cli -h 127.0.0.1 -p 6379 -a passwd

輸入如下命令,查看當(dāng)前連接數(shù):

INFO clients

程序包redis.clients.jedis不存在,免費(fèi)專欄,redis,java,數(shù)據(jù)庫,后端,spring

  1. 檢查redis服務(wù)器的最大連接數(shù)配置,如果需要,請將其增加。

輸入如下命令,查看最大連接數(shù):

config get maxclients

程序包redis.clients.jedis不存在,免費(fèi)專欄,redis,java,數(shù)據(jù)庫,后端,spring

  1. 檢查網(wǎng)絡(luò)連接是否正常,并確保防火墻未阻止連接。

  2. 檢查redis服務(wù)器的配置文件和協(xié)議是否正確。文章來源地址http://www.zghlxwxcb.cn/news/detail-703144.html

到了這里,關(guān)于詳細(xì)解決redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • redis教程 二 redis客戶端Jedis使用

    redis教程 二 redis客戶端Jedis使用

    在Redis官網(wǎng)中提供了各種語言的客戶端,地址:https://redis.io/docs/clients/ 其中Java客戶端也包含很多但在開發(fā)中用的最多的還是Jedis,接下來就讓我們以Jedis開始我們的快速實(shí)戰(zhàn)。 入門案例詳細(xì)步驟 案例分析: 創(chuàng)建工程: 創(chuàng)建一個(gè)maven管理的java項(xiàng)目 引入依賴: 在pom.xml文件下添

    2024年02月05日
    瀏覽(22)
  • java操作redis之jedis

    我們之前對Redis的學(xué)習(xí)都是在命令行窗口,那么如何使用Java來對Redis進(jìn)行操作呢?對于Java連接Redis的開發(fā)工具有很多,這里先介紹通過Jedis實(shí)現(xiàn)對Redis的各種操作。(前提是你的redis已經(jīng)配置了遠(yuǎn)程訪問) 到這里Jedis如何連接redis以及常用操作已經(jīng)了解了,其實(shí)這里的操作方法和

    2024年02月09日
    瀏覽(20)
  • java:使用Jedis操作redis

    Redis是一個(gè)基于內(nèi)存的高性能鍵值存儲數(shù)據(jù)庫,支持多種數(shù)據(jù)結(jié)構(gòu),如字符串、列表、集合等。在Java中,我們可以通過Jedis客戶端來操作Redis數(shù)據(jù)庫。 安裝Jedis客戶端 在Java應(yīng)用程序中使用Jedis客戶端之前,需要將其添加到項(xiàng)目中??梢酝ㄟ^Maven或Gradle來管理依賴。下面是Maven的

    2024年02月07日
    瀏覽(21)
  • Jedis(一)與Redis的關(guān)系

    Jedis(一)與Redis的關(guān)系

    目錄 一、Jedis介紹: 1、背景: 2、Jedis連接池介紹: 二、Jedis API: 1、連接池API 2、其他常用API:? 三、SpringBoot集成Jedis:? 1、Redis集群模式: (1)配置文件:配置redis、jedis屬性信息 (2)Jedis連接池配置類,連接Redis: (3)Jedis工具類:這里展示基本CRUD操作 2、Redis單機(jī)模

    2024年01月24日
    瀏覽(19)
  • Redis-redis事務(wù)、樂觀鎖、Jedis、SpringBoot整合Redis

    Redis-redis事務(wù)、樂觀鎖、Jedis、SpringBoot整合Redis

    1、事務(wù) ①開啟事務(wù)、執(zhí)行事務(wù) ② 取消事務(wù) ③ 編譯性異常(代碼有問題! 命令有錯(cuò)?。?,事務(wù)中所有的命令都不會被執(zhí)行! ④ 運(yùn)行時(shí)異常(I/O),如果事務(wù)隊(duì)列中存在語法行,那么執(zhí)行命令的時(shí)候,其他命令是可以正常執(zhí)行的,錯(cuò)誤命令拋出異常! (區(qū)別于直接命令錯(cuò)誤

    2024年01月16日
    瀏覽(18)
  • 【Spring Boot 3】【Redis】集成Jedis

    軟件開發(fā)是一門實(shí)踐性科學(xué),對大多數(shù)人來說,學(xué)習(xí)一種新技術(shù)不是一開始就去深究其原理,而是先從做出一個(gè)可工作的DEMO入手。但在我個(gè)人學(xué)習(xí)和工作經(jīng)歷中,每次學(xué)習(xí)新技術(shù)總是要花費(fèi)或多或少的時(shí)間、檢索不止一篇資料才能得出一個(gè)可工作的DEMO,這占用了我大量的時(shí)

    2024年01月19日
    瀏覽(92)
  • Redis的Java客戶端-Jedis

    Redis的Java客戶端-Jedis

    在 Redis官網(wǎng) 中提供了各種語言的客戶端,地址: https://redis.io/docs/clients/ 其中Java客戶端也包含很多: 標(biāo)記為 ? 的就是推薦使用的java客戶端,包括: Jedis和Lettuce:這兩個(gè)主要是提供了Redis命令對應(yīng)的API,方便我們操作Redis,而SpringDataRedis是對這兩種做了抽象和封裝。 Redisso

    2024年02月19日
    瀏覽(19)
  • 【Springboot系列】整合redis+jedis(含源碼)

    Spring Boot集成Redis和Jedis客戶端使用Redis有以下主要特點(diǎn): ? ??簡單易用只需要添加相關(guān)依賴和簡單配置,就可以直接在Spring Boot應(yīng)用中使用Jedis客戶端操作Redis。這大大簡化了使用Redis的難度。 ? ??自動配置Spring Boot會根據(jù)類路徑中的Jedis版本自動配置JedisConnectionFactory。我們只

    2024年02月12日
    瀏覽(23)
  • 【Redis】2、Redis 的 Java 客戶端(Jedis 和 SpringDataRedis)

    【Redis】2、Redis 的 Java 客戶端(Jedis 和 SpringDataRedis)

    Jedis 的使用:https://redis.io/docs/clients/java/ ?? Jedis 實(shí)例是線程不安全的 ?? 多線程環(huán)境 下需要基于連接池來使用 ?? 這里使用的連接池技術(shù)是 Jedis 提供的 ?? JedisPool :Redis 連接池 ?? JedisPoolConfig :Redis 連接池的配置 ?? SpringData 是 Spring 中數(shù)據(jù)操作的模塊,包含對各種數(shù)據(jù)庫

    2024年02月11日
    瀏覽(27)
  • Redis-Java客戶端-Jedis

    目錄 01.導(dǎo)入依賴 02.進(jìn)行測試連接 03.使用JedisPool 04.修改測試的代碼 ????????新建一個(gè)mevan工程,在pom文件下導(dǎo)入相應(yīng)的依賴,相依的依賴可以去官網(wǎng)查找 spring官網(wǎng):Spring Data Redis ????????在test目錄下,創(chuàng)建一個(gè)測試類JedisTest 這里可能回報(bào)密碼的錯(cuò)誤, 可能需要去設(shè)置

    2024年02月14日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包