问题
直接通过redis-cli连接到我的双代理将正确地代理我到redis,没有任何问题/断开连接。但是,当我使用节点-redis连接到twemproxy时,我会得到以下错误:
[Error: Redis connection gone from end event.]追踪情况如下:
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和双代理的交互方式有关。或者不互动,视情况而定。
我的问题
到底发生了什么?
背景资料
我有一个简单的测试设置,如下所示:
+------------------+
| +----+----+ |
| | r1 + r2 + |
| +----+----+ |
| | | |
| +---------+ |
| |twemproxy| |
| +---------+ |
| / | \ |
| +----+----+----+ |
| | aw | aw | aw | |
| +----+----+----+ |
+------------------+
aw = api worker
r1/r2 = redis instance
twemproxy = twemproxy发布于 2014-05-15 19:28:49
经过一番戳,我意识到这是因为node_redis试图在默认情况下调用连接上的"info“命令。
简单地修改包含no_ready_check: true的连接选项将解决这个问题,并通过双代理强制连接。
https://stackoverflow.com/questions/23686861
复制相似问题