【问题标题】:How do i get the redis store client from socket-io-redis?如何从 socket-io-redis 获取 redis 存储客户端?
【发布时间】:2016-10-22 05:36:23
【问题描述】:

socket-io-redis使用redis里面连接,我想知道如何从库中获取redis存储客户端,以便我可以使用该客户端将键值对存储在redis中。

var redis   = require('socket.io-redis');
var socketio = require('socket.io');

io = socketio.listen(app);    
io.adapter(redis({ host: 'localhost', port: 6379 }));

我正在使用节点集群模型,所以我不想创建一个新的 redis 客户端,因为我已经有了一个。

【问题讨论】:

    标签: node.js socket.io node-redis


    【解决方案1】:

    显示here:

    var adapter   = redis({ host: 'localhost', port: 6379 });
    var pubClient = adapter.pubClient;
    io.adapter(adapter);
    

    还有一个等效的 adapter.subClient,但您不应该使用它(运行在 "subscribe" 模式下的客户端不应用于常规 Redis 命令)。

    我也不确定使用pubClient 发出命令是否明智。 Redis 可以很好地处理多个连接,并且很容易从pubClient 实例创建一个新客户端:

    var pubClient = adapter.pubClient.duplicate();
    

    【讨论】:

    • 我认为拥有多个连接不是一个明智的选择,它会减慢redis的速度,但是感谢清除我的疑问,我宁愿创建一个新的redis客户端。像这样创建新客户端有什么区别 require('redis').createClient(host,port);而不是从 pubClient 创建它?
    • @bikash 唯一的区别是使用duplicate() 时,您不必再次传递连接选项(服务器、凭据等)。除此之外,它是一样的。
    猜你喜欢
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 2014-01-24
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    相关资源
    最近更新 更多