Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
寻找将redis与node.js一起使用的有效方法_Node.js_Redis - Fatal编程技术网

寻找将redis与node.js一起使用的有效方法

寻找将redis与node.js一起使用的有效方法,node.js,redis,Node.js,Redis,我已经编写了一些使用redis和node.js的聊天室示例,但在我继续这条路径之前,我想知道这是否是最好的方式: var redis = require('redis') , cache = redis.createClient(cfg.redis_port, cfg.redis_host) function getUsers(cb){ cache.select(cfg.redis_db, function(err, status){ cache.get('chat.

我已经编写了一些使用redis和node.js的聊天室示例,但在我继续这条路径之前,我想知道这是否是最好的方式:

var redis = require('redis')
, cache = redis.createClient(cfg.redis_port, cfg.redis_host)


function getUsers(cb){
    cache.select(cfg.redis_db, function(err, status){
        cache.get('chat.users', function(err, data){
            var users = data && JSON.parse(data) || [];

            c.log('get users', users);
            cb(users);
        });
    });
}

function addUser(user, cb){
    getUsers(function(users){
        users.push(user);

        cache.select(cfg.redis_db, function(err, status){
            cache.set('chat.users', JSON.stringify(users), function(){
                c.log('cache set', arguments);

                c.log('add user', user, users);
                cb(users);
            });
        });
    });
}

function removeUser(user, cb){
    getUsers(function(users){
        users = _.reject(users, function(val){
            return user.nick === val.nick;
        });

        cache.select(cfg.redis_db, function(err, status){
            cache.set('chat.users', JSON.stringify(users), function(){
                c.log('cache set', arguments);

                c.log('remove user', user, users);

                cb(users);
            });
        });
    });
}

我问的原因是,必须进行
缓存似乎相当麻烦。选择
然后进行
缓存。在Redis中获取
,一旦选择了数据库,它将保持选中状态,直到发出另一个
选择
。由于节点Redis客户端将在客户端准备就绪之前发出的命令排队,因此您可以执行以下操作:

var redis = require('redis')
, cache = redis.createClient(cfg.redis_port, cfg.redis_host);

cache.select(cfg.redis_db);

// the rest of your code
它看起来不太像节点,但它可以工作,并在上的一个示例中显示(作为注释;很容易错过)