io.lettuce.core.RedisCommandTimeoutException: Command timed out 解決辦法

csdn-華仔發表於2018-07-24

問題描述:

專案開發的過程中,應業務需求將Redis作為快取伺服器整合進了Spring Boot的專案中,在初測試的時候,遇到連線超時的情況,錯誤資訊如下:

Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to 192.168.159.132:6379
    at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56)
    at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:233)
    at io.lettuce.core.RedisClient.connectStandalone(RedisClient.java:253)
    at io.lettuce.core.RedisClient.connect(RedisClient.java:202)
    at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.getConnection(StandaloneConnectionProvider.java:56)
    at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceConnectionFactory.java:959)
    ... 41 more
Caused by: io.lettuce.core.RedisCommandTimeoutException: Command timed out
    at io.lettuce.core.LettuceFutures.awaitOrCancel(LettuceFutures.java:114)
    at io.lettuce.core.AbstractRedisAsyncCommands.auth(AbstractRedisAsyncCommands.java:81)
    at io.lettuce.core.RedisClient.lambda$connectStatefulAsync$2(RedisClient.java:324)
    at io.lettuce.core.RedisClient$$Lambda$436/1235678342.apply(Unknown Source)
    at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:602)
    at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:577)
    at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:442)
    at io.netty.util.concurrent.DefaultEventExecutor.run(DefaultEventExecutor.java:66)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.lang.Thread.run(Thread.java:745)

如下圖:
這裡寫圖片描述


解決辦法:

解析Redis配置檔案,Redis主要的yaml配置檔案如下:

  # redis 相關配置
  redis:
    #  資料庫索引
    database: 0
    # 遠端伺服器地址
    host: 192.168.159.***
    # 遠端伺服器埠
    port: 6379
    # 驗證碼
    password: ******
    jedis:
      pool:
        # 最大空閒連線
        max-idle: 8
        # 最小空閒連結
        min-idle: 0
        # 最大連線數(負數表示沒有限制)
        max-active: 8
        # 最大阻塞等待時間(負數表示沒有限制)
        max-wait: 0
    # 連結超時時間(毫秒)
    timeout: 50

請注意,上面的配置引數,timeout 為 50,單位為毫秒,由此引數設定過小導致的,將這個引數設值得更大些,如200或以上!
timeout 這個在實際的生產環境中非常有用,就不具體的闡述了,自己去體會。。。
調整Redis的配置引數後,再次測試業務操作就成功了,如下圖:
這裡寫圖片描述


好了,關於 io.lettuce.core.RedisCommandTimeoutException: Command timed out 解決辦法 就寫到這兒了,如果還有什麼疑問或遇到什麼問題歡迎掃碼提問,也可以給我留言哦,我會一一詳細的解答的。
歇後語:“ 共同學習,共同進步 ”,也希望大家多多關注CSND的IT社群。

相關文章