redis 无法创建套接字

Posted

技术标签:

【中文标题】redis 无法创建套接字【英文标题】:redis failed to create socket 【发布时间】:2022-01-18 13:33:41 【问题描述】:

遇到 redis 连接问题。主机和端口已配置,docker 中的 redis 容器运行良好,我不知道为什么会发生此异常。

我如何运行这个测试:

使用 redis 运行 docker 容器 -> 进入 redis cli 并执行“redis-server”

cli截图:

在我运行测试之后。

附: redis 在控制台中运行良好

redis 控制台:

测试

@SpringBootTest
class MessengerApplicationTests 

    @Test
    void contextLoads() 
        Jedis jedis = new Jedis();

        System.out.println(jedis.keys("*"));
    


例外

Failed to create socket.
    redis.clients.jedis.exceptions.JedisConnectionException: Failed to create socket.
        at app//redis.clients.jedis.DefaultJedisSocketFactory.createSocket(DefaultJedisSocketFactory.java:110)
        at app//redis.clients.jedis.Connection.connect(Connection.java:226)
        at app//redis.clients.jedis.BinaryClient.connect(BinaryClient.java:140)
        at app//redis.clients.jedis.Connection.sendCommand(Connection.java:163)
        at app//redis.clients.jedis.BinaryClient.keys(BinaryClient.java:248)
        at app//redis.clients.jedis.Client.keys(Client.java:130)
        at app//redis.clients.jedis.Jedis.keys(Jedis.java:380)
        at app//com.microservice.messenger.MessengerApplicationTests.contextLoads(MessengerApplicationTests.java:22)
        at java.base@16.0.1/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base@16.0.1/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
        at java.base@16.0.1/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base@16.0.1/java.lang.reflect.Method.invoke(Method.java:567)
        at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:725)
        at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)

application.yml

server:
  port: $SERVER_PORT:3031

spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/reg_auth_db
    username: postgres
    password: postgres

  flyway:
    url: jdbc:postgresql://localhost:5432/reg_auth_db
    user: postgres
    password: postgres

  rabbitmq:
      password: guest
      username: guest
      port: 15672
  redis:
    port: 6379
    host: localhost

【问题讨论】:

各种 Redis 命令不应该写出 PNG 文件,只能写出纯文本;是什么产生了您附加到问题的图像?应用程序本身是否在容器中运行? @DavidMaze 只运行在容器中的redis 你是如何启动它的? (你有docker run -p 6379:6379 选项吗?) 【参考方案1】:

我使用了错误的端口,因为我有一个具有三个不同端口的企业版

【讨论】:

以上是关于redis 无法创建套接字的主要内容,如果未能解决你的问题,请参考以下文章

节点 Js 无法将消息发送到在线特定套接字

节点 Js 无法将消息发送到在线特定套接字

带有套接字 io 和 redis 的 laravel echo 服务器

在 Erlang 中通过 RPC 在远程节点上创建套接字时,无法接受套接字上的连接

Mysql 5.7 无法创建 unix 套接字锁定文件

s3eSocket 果酱无法创建套接字