【问题标题】:redisPub, redisSub, redisStore - for socket.io storeredisPub、redisSub、redisStore - 用于 socket.io 存储
【发布时间】:2014-08-02 19:00:15
【问题描述】:

以这个示例代码为例:

//Redis Variables
var redis = require('socket.io/node_modules/redis');
var RedisStore = require('socket.io/lib/stores/redis');
var pub = redis.createClient();
var sub = redis.createClient();
var client = redis.createClient();
var redis_store = new RedisStore({
                        redisPub: pub,
                        redisSub: sub,
                        redisClient: client
                      });

io.configure(function(){
  io.set('store', redis_store);  
});

两个问题:

(1)pubsubclient都连接到同一个redis数据库对吧?

(2) 那么它们之间有什么区别,redisPub、redisSub、redisClient到底是干什么用的呢?

【问题讨论】:

    标签: redis socket.io


    【解决方案1】:

    是的,它们都连接到同一个Redis实例,但是它们对应到这个实例的不同连接。

    当您使用 Redis 发布/订阅时,必须打开多个连接,因为一旦在给定连接上建立了订阅,就无法将此连接用于其他任何事情:

    • sub 用于订阅/取消订阅和接收通知消息
    • pub 用于发布通知
    • 客户端用于 get/set/del/has/destroy 方法

    我猜 pub 和 client 实际上可以使用相同的 Redis 连接。

    【讨论】:

    • 您甚至可以通过将端口和主机传递给createClient 来明确您的 Redis 客户端的去向,例如:var client = redis.createClient(6379, 'localhost'); 应该将您连接到本地 Redis 服务器(假设您没有忘记开始它;))。
    猜你喜欢
    • 2013-12-07
    • 2012-03-05
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 2014-03-06
    • 2012-08-11
    • 2012-09-27
    相关资源
    最近更新 更多