首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点- redis不能通过双代理连接到redis实例。

节点- redis不能通过双代理连接到redis实例。
EN

Stack Overflow用户
提问于 2014-05-15 19:17:39
回答 1查看 2.1K关注 0票数 4

问题

直接通过redis-cli连接到我的双代理将正确地代理我到redis,没有任何问题/断开连接。但是,当我使用节点-redis连接到twemproxy时,我会得到以下错误:

代码语言:javascript
复制
[Error: Redis connection gone from end event.]

追踪情况如下:

代码语言:javascript
复制
Error: Ready check failed: Redis connection gone from end event.
    at RedisClient.on_info_cmd (/home/vagrant/tests/write-tests/node_mo
dules/redis/index.js:368:35)
    at Command.callback (/home/vagrant/tests/write-tests/node_modules/r
edis/index.js:418:14)
    at RedisClient.flush_and_error (/home/vagrant/tests/write-tests/nod
e_modules/redis/index.js:160:29)
    at RedisClient.connection_gone (/home/vagrant/tests/write-tests/nod
e_modules/redis/index.js:474:10)
    at Socket.<anonymous> (/home/vagrant/tests/write-tests/node_modules
/redis/index.js:103:14)
    at Socket.EventEmitter.emit (events.js:117:20)
    at _stream_readable.js:919:16
    at process._tickCallback (node.js:419:13)

无论redis服务器是否正在运行,都会发生此错误,因此我确信这与节点-redis和双代理的交互方式有关。或者不互动,视情况而定。

我的问题

到底发生了什么?

背景资料

我有一个简单的测试设置,如下所示:

代码语言:javascript
复制
+------------------+
|   +----+----+    |
|   | r1 + r2 +    |
|   +----+----+    |
|     |     |      |
|   +---------+    |
|   |twemproxy|    |
|   +---------+    |
|    /   |   \     |  
| +----+----+----+ |
| | aw | aw | aw | |
| +----+----+----+ |
+------------------+

aw = api worker
r1/r2 = redis instance
twemproxy = twemproxy
  • aw's当前是聚集在同一主机上的nodejs
  • r1/r2是节点的实例,同样位于同一主机上。
  • 节点版本0.10.x
  • 这三台机器都是以非常稀疏的流浪文件运行的。静态IP分配给每一个现在,私有网络。每台机器都可以从指定端口上的每台机器到达。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-15 19:28:49

经过一番戳,我意识到这是因为node_redis试图在默认情况下调用连接上的"info“命令。

简单地修改包含no_ready_check: true的连接选项将解决这个问题,并通过双代理强制连接。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23686861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档