错误:io.莴苣.core,RedConnectionException无法连接到本地主机/<未解析>

hmtdttj4  于 2022-09-19  发布在  Spring
关注(0)|答案(1)|浏览(131)

我正在从一本书中尝试这个教程,其中有一个api正在运行,当使用redis代码的应用程序被调用时,它应该从api输出信息。然而,这是我运行应用程序时遇到的错误:

  1. org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to localhost/<unresolved>:6379
  2. at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.translateException(LettuceConnectionFactory.java:1689) ~[spring-data-redis-2.6.3.jar:2.6.3]
  3. at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1597) ~[spring-data-redis-2.6.3.jar:2.6.3]
  4. at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceConnectionFactory.java:1383) ~[spring-data-redis-2.6.3.jar:2.6.3]
  5. at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getConnection(LettuceConnectionFactory.java:1366) ~[spring-data-redis-2.6.3.jar:2.6.3]
  6. at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getSharedConnection(LettuceConnectionFactory.java:1093) ~[spring-data-redis-2.6.3.jar:2.6.3]
  7. at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getConnection(LettuceConnectionFactory.java:421) ~[spring-data-redis-2.6.3.jar:2.6.3]
  8. at com.demo.springdataexample.demo.PlaneFinderPoller.pollPlanes(PlaneFinderPoller.java:25) ~[classes/:na]
  9. at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
  10. at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
  11. at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
  12. at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
  13. at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:84) ~[spring-context-5.3.18.jar:5.3.18]
  14. at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[spring-context-5.3.18.jar:5.3.18]
  15. at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[na:na]
  16. at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) ~[na:na]
  17. at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[na:na]
  18. at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na]
  19. at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]
  20. at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
  21. Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to localhost/<unresolved>:6379
  22. at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78) ~[lettuce-core-6.1.8.RELEASE.jar:6.1.8.RELEASE]
  23. at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56) ~[lettuce-core-6.1.8.RELEASE.jar:6.1.8.RELEASE]
  24. at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:330) ~[lettuce-core-6.1.8.RELEASE.jar:6.1.8.RELEASE]
  25. at io.lettuce.core.RedisClient.connect(RedisClient.java:216) ~[lettuce-core-6.1.8.RELEASE.jar:6.1.8.RELEASE]
  26. at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.lambda$getConnection$1(StandaloneConnectionProvider.java:115) ~[spring-data-redis-2.6.3.jar:2.6.3]
  27. at java.base/java.util.Optional.orElseGet(Optional.java:364) ~[na:na]
  28. at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.getConnection(StandaloneConnectionProvider.java:115) ~[spring-data-redis-2.6.3.jar:2.6.3]
  29. at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1595) ~[spring-data-redis-2.6.3.jar:2.6.3]
  30. ... 17 common frames omitted

以下是代码:
主要类别:

  1. package com.demo.springdataexample.demo;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.context.annotation.Bean;
  5. import org.springframework.data.redis.connection.RedisConnectionFactory;
  6. import org.springframework.data.redis.core.RedisOperations;
  7. import org.springframework.data.redis.core.RedisTemplate;
  8. import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
  9. import org.springframework.data.redis.serializer.StringRedisSerializer;
  10. @SpringBootApplication
  11. public class SburRedisApplication {
  12. @Bean
  13. public RedisOperations<String, Aircraft>
  14. redisOperations(RedisConnectionFactory factory) {
  15. Jackson2JsonRedisSerializer<Aircraft> serializer =
  16. new Jackson2JsonRedisSerializer<>(Aircraft.class);
  17. RedisTemplate<String, Aircraft> template = new RedisTemplate<>();
  18. template.setConnectionFactory(factory);
  19. template.setDefaultSerializer(serializer);
  20. template.setKeySerializer(new StringRedisSerializer());
  21. return template;
  22. }
  23. public static void main(String[] args) {
  24. SpringApplication.run(SburRedisApplication.class, args);
  25. }
  26. }

PlaneFinderPoller.java

  1. package com.demo.springdataexample.demo;
  2. import org.springframework.data.redis.connection.RedisConnectionFactory;
  3. import org.springframework.data.redis.core.RedisOperations;
  4. import org.springframework.scheduling.annotation.EnableScheduling;
  5. import org.springframework.scheduling.annotation.Scheduled;
  6. import org.springframework.stereotype.Component;
  7. import org.springframework.web.reactive.function.client.WebClient;
  8. @EnableScheduling
  9. @Component
  10. public class PlaneFinderPoller {
  11. private WebClient webclient =
  12. WebClient.create("http://localhost:7634/aircraft");
  13. private final RedisConnectionFactory connectionFactory;
  14. private final RedisOperations<String, Aircraft> redisOperations;
  15. public PlaneFinderPoller(RedisConnectionFactory connectionFactory,
  16. RedisOperations<String, Aircraft> redisOperations)
  17. {
  18. this.connectionFactory = connectionFactory;
  19. this.redisOperations = redisOperations;
  20. }
  21. @Scheduled(fixedRate = 1000)
  22. private void pollPlanes(){
  23. connectionFactory.getConnection().serverCommands().flushDb();
  24. webclient.get()
  25. .retrieve()
  26. .bodyToFlux(Aircraft.class)
  27. .filter(plane -> !plane.getReg().isEmpty())
  28. .toStream()
  29. .forEach(ac -> redisOperations.opsForValue().set(ac.getReg(), ac));
  30. redisOperations.opsForValue()
  31. .getOperations()
  32. .keys("*")
  33. .forEach(ac -> System.out.println(redisOperations.opsForValue().get(ac)));
  34. }
  35. }

Aircraft.java

相关问题