Nodejs socket服务中实例redis对象,然后切换redis连接ip,读取数据不会实时生效
发布于 10 年前 作者 zhanghuizong 3998 次浏览 最后一次编辑是 8 年前 来自 问答

redis配置信息 端口:6379 域名:node1.redis.com

app.js socket服务端: var server = require(‘http’).createServer(); var io = require(‘socket.io’)(server); var redis = require(“redis”), client = redis.createClient(6379, ‘node1.redis.com’); client.get(“missingkey”, function(err, reply) { console.log(reply); }); 多余代码省略… server.listen(3000);

/etc/hosts 信息如下: 127.0.0.1 node1.redis.com #192.168.163.131 node1.redis.com

1、启动app.js node app.js 2、不重启app.js服务,修改/etc/hosts配置信息如下 #127.0.0.1 node1.redis.com 192.168.163.131 node1.redis.com 此时redis已经切换到131,地址, 备注:127.0.0.1和192.168.163.131这两台的redis都没有关闭 3、那么此时问题来了。。。。。此时redis已经切换到131,但是读取的内容还是127.0.0.1这台服务的上数据,并不会去读取131上的数据!! 备注:最后分析出来应该是redis实例对象的问题,但没有想到的好的方案解决

不知问题描述是否足够清楚,不知道哪位高人知道具体,并且如何解决!!

3 回复

顶顶呀,不要让此贴沉沦呀!兄弟们帮忙顶一下哈!

写个子进程watch hosts文件,文件更改时通知主进程重新创建redis实例

@dayuoba 这个方案也可以,万一hosts文件你没有权限监控了,,

回到顶部