как сохранить данные по циклу в Redis - PullRequest
0 голосов
/ 01 августа 2011

с использованием этого клиента узла Redis https://github.com/mranney/node_redis

Я хочу сохранить три использования одновременно в цикле. но не в состоянии сохранить только последние пользователи спасаются? здесь я хочу сохранить rahul0, rahul1, rahul2, чтобы быть пользователями в redis но спасается только rahul2.

var redis = require("redis"),
    sys = require("sys"),
    client = redis.createClient();

client.del("channels.59-O");

for(var j=0; j<3; j++) {
    client.hgetall("channels.59-O", makeCallback(j));
    function makeCallback(index) {
        return function(err, result){
            console.log('check '+sys.inspect(result));
            if(!result.users) {
                var channeldata={
                    'users':"rahul"+index
                };
                console.log('dsfsdc'+sys.inspect(channeldata));
                client.hmset('channels.59-O', channeldata);
            } else {
                var users=result.users.split(',');
                users.push("rahul"+index);
                var channeldata={
                    'users':users.join(',')
                };
                console.log('check 1 '+sys.inspect(channeldata));
                client.hmset('channels.59-O', channeldata);
            }
        };
    }
}

Подскажите, пожалуйста, что делать?

1 Ответ

0 голосов
/ 02 августа 2011

Вы пишете один и тот же хэш-ключ каждый раз, поэтому последний пользователь hmset будет преобладать над остальными.

Изменение

client.hmset('channels.59-O', channeldata)

до

client.hmset('channels.59-O:' + index, channeldata)

При этом каждый пользователь будет иметь свой собственный хеш-ключ , идентифицируемый суффиксом .

Итак, в вашем примере после этого вы можете получить доступ (например, через redis-cli), channels.59-O:0 для rahul0 данных, channels.59-O:1 для rahul1 данных и т. Д.

Также вам придется управлять их удалением, client.del("channels.59-O") теперь должно быть client.del("channels.59-O:0"), client.del("channels.59-O:1") и т. Д.

Надеюсь, это поможет. Также проверьте этот аналогичный ответ: Написание запроса для добавления нескольких значений к ключу в хеше REDIS?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...