redis 好像服务器已经关闭了连接

2023-12-08

我想使用redis sub/pub,但是当我订阅一个频道时,2分钟后,控制台输出异常: 服务器似乎已关闭连接。

redis版本:redis-3.0.3

jedis版本:2.3.0

操作系统:OS X Yosemite 10.10.5

订阅.class

    JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
    jedisPoolConfig.setMaxIdle(10);
    jedisPoolConfig.setMaxWait(4000);
    jedisPoolConfig.setTestOnBorrow(true);
    JedisPool jedisPool = new JedisPool(jedisPoolConfig, "127.0.0.1", 6379);

    final Jedis jedis = jedisPool.getResource();
    System.out.println(jedis.configGet("timeout"));
    System.out.println(jedis.configGet("tcp-keepalive"));
    final JedisPubSub jedisPubSub = new JedisPubSub() {
        @Override
        public void onMessage(String channel, String message) {
            System.out.println("onMessage");
        }

        @Override
        public void onPMessage(String pattern, String channel, String message) {
            System.out.println("onPMessage");
        }

        @Override
        public void onSubscribe(String channel, int subscribedChannels) {
            System.out.println("onSubscribe");
        }

        @Override
        public void onUnsubscribe(String channel, int subscribedChannels) {
            System.out.println("onUnsubscribe");
        }

        @Override
        public void onPUnsubscribe(String pattern, int subscribedChannels) {
            System.out.println("onPUnsubscribe");
        }

        @Override
        public void onPSubscribe(String pattern, int subscribedChannels) {
            System.out.println("onPSubscribe");
        }
    };
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    System.out.println(dateFormat.format(new Date()));
    jedis.subscribe(jedisPubSub, "/atm/test");

发布类

Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.publish("/atm/test", "lqiaing---hello");

然后2分钟后控制台输出:

[timeout, 0]
[tcp-keepalive, 0]
2015-12-03 19:01:55
onSubscribe
Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: 
It seems like server has closed the connection.
at redis.clients.util.RedisInputStream.readLine(RedisInputStream.java:91)
at redis.clients.jedis.Protocol.processMultiBulkReply(Protocol.java:110)
at redis.clients.jedis.Protocol.process(Protocol.java:63)
at redis.clients.jedis.Protocol.read(Protocol.java:122)
at redis.clients.jedis.Connection.getObjectMultiBulkReply(Connection.java:196)
at redis.clients.jedis.JedisPubSub.process(JedisPubSub.java:88)
at redis.clients.jedis.JedisPubSub.proceed(JedisPubSub.java:83)
at redis.clients.jedis.Jedis.subscribe(Jedis.java:1974)
at Subscribe.main(Subscribe.java:63)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

有人可以帮助我吗?很感谢!


我不是 OSX 用户,但可能是操作系统配置为终止超过 120 秒的 TCP 连接。您是否尝试过将 tcp-keepalive 选项设置为某个值(例如 30 秒)来检查连接是否仍然中断?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

redis 好像服务器已经关闭了连接 的相关文章

随机推荐

  • SpreadsheetFormatRow 突然停止工作

    我见过this帖子 但看起来确实有解决方案 无论如何 我正在使用 ColdFusion 10 生成 Excel 电子表格 但是 当我使用 SpreadsheetFormatRow 并传入要格式化的行时 它只执行大约 3 个操作 然后突然停止
  • 通过 Jenkins CI 工具执行 AUTO IT EXE

    我正在使用 CI Jenkins 工具并尝试执行 AUTO IT Exe 文件 我尝试通过詹金斯 使用以下选项 但是什么都没有解决 执行命令行参数 批处理文件 ant file Windows 运行器插件 通过 Jenkins 在从属设备上
  • 如果其中一个是使用 Popen 启动的,为什么两个 Python 脚本之间的套接字连接会中断?

    所以我有两个非常简单的 python 脚本通过套接字进行通信 现在它们都在同一台 Windows PC 上运行 这是控制器 py import socket import time import sys from subprocess im
  • 无法使用 Python 将阿拉伯语解码的 Unicode 保存到 CSV 文件

    我正在使用 python 的 Twitter 流媒体包 我目前正在使用以 unicode 编写的关键字来搜索包含该单词的推文 然后 我使用 python 创建推文的数据库 csv 文件 但是 当我将推文保存到 csv 中时 我想将它们转换回
  • 了解用户是否启动了应用程序

    好吧 这个标题可能看起来很奇怪 但请耐心听我说 我有一个应用程序 用户可以根据其首选项进行设置 以便在登录时启动 这意味着我可以预期有时该应用程序将由用户启动 单击 Dock Finder 等 但有时该应用程序将在登录时由系统自动启动 我想
  • 如何从 UITableView 中删除选定的行? [复制]

    这个问题在这里已经有答案了 可能的重复 将表更改为编辑模式并删除普通 ViewController 中的行 我想从 tableView 中删除选定的行 我想向用户提供当用户在行上滑动或轻弹手指时删除该行的功能 我知道编辑风格提供了一个带有
  • 使用 std::chrono 在 C++ 中输出日期和时间

    我一直在升级一些旧代码 并尽可能更新到 c 11 以下代码是我在程序中显示时间和日期的方法 include
  • 如何使用 picasso 库实现我自己的磁盘缓存 - Android?

    我正在使用 picasso 库为我的应用程序加载图像 但我不知道如何使用 picasso 库实现我自己的磁盘 sdcard 缓存 Picasso 使用 HTTP 客户端进行磁盘缓存 如果已经配置 它将使用该客户端而不是安装自己的客户端 对于
  • 更改 UISegmentedControl 的高度

    我正在尝试改变高度UISegmentedControl使用此代码 CGRect frame mySegmentedControl frame mySegmentedControl setFrame CGRectMake frame orig
  • 我只需要重写 Toast 类的 show()

    我只需要覆盖show 方法为Toast班级 我创建了一个扩展的类Toast类 但随后我创建了一条 toast 消息 但出现异常setView View view 还没有被调用 但我不想创建自定义View方法 但使用默认方法 那么 如何才能覆
  • SecurityAttribute.Unrestricted 问题

    我对这个属性感到困惑 正如这里提到的 http msdn microsoft com en us library system security permissions securityattribute unrestricted aspx
  • 使用自定义 CSS 将 HTML 文件加载到 WebView

    我的 Android 应用程序上有一个 WebView 可以加载 WebView loadUrl 手机内部存储中的不同本地 HTML 文件 我想为它们添加一些自定义 css 样式 现在 我可以让我的应用程序编辑每个 HTML 文件并添加 C
  • scipy curve_fit 不喜欢数学模块

    在尝试创建一个示例时scipy optimize curve fit我发现scipy似乎与Python的不兼容math模块 而函数f1工作正常 f2抛出错误消息 from scipy optimize import curve fit fr
  • 添加到词典的不同方式

    有什么区别Dictionary add key value and Dictionary key value 我注意到最后一个版本没有抛出ArgumentException插入重复密钥时 但有什么理由更喜欢第一个版本 Edit 请问谁有这方
  • 警告:无法访问代码,使用 Reactjs

    我正在使用 ReactJs 我有两个组件 PrescriptionIndex 和 PrescriptionNew 将一个组件与另一个组件集成 这是我的第一个组件 PrescriptionNew import React Component
  • 为什么我的 Java 中的 PriorityBlockingQueue 无法正确排序?

    由于某种原因 当我添加到优先级队列时 它不会完全按字母顺序对我的字符串进行排序 我不明白为什么 这是添加到 PriorityBlockingQueue 的代码 String toAdd String format s s directory
  • 在 JTextField 上设置光标

    我正在用 Java 制作一个使用 JTextField 的小型应用程序 现在 我希望 一旦运行应用程序 光标就会自动放置在该位置 以便用户不必单击它然后编写文本 我已经尝试了在网上找到的几乎所有内容 setCaretPosition 0 g
  • 如何使用 cmake 将 git SHA1 作为定义传递给编译器?

    在 Makefile 中 这可以通过以下方式完成 g DGIT SHA1 git log 1 head n 1 这非常有用 因为二进制文件知道确切的提交 SHA1 因此可以在发生段错误时转储它 我怎样才能用 CMake 达到同样的效果 我制
  • 在 Python 中保存图像的最佳格式是什么,为什么 pydot 会保存无效图像?

    我在用pydot在我的机器上保存图像文件 然后使用图像模块打开该文件 但是 我使用时遇到错误Windows Photo viewer 该图像无法打开 因为它已被删除或位于不可用的位置 这是不正确的 因为图像被保存到我的桌面上 有时 图片确实
  • redis 好像服务器已经关闭了连接

    我想使用redis sub pub 但是当我订阅一个频道时 2分钟后 控制台输出异常 服务器似乎已关闭连接 redis版本 redis 3 0 3 jedis版本 2 3 0 操作系统 OS X Yosemite 10 10 5 订阅 cl