【问题标题】:how to save data by loop in redis如何在redis中循环保存数据
【发布时间】:2011-10-17 07:23:41
【问题描述】:

使用这个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);
            }
        };
    }
}

请建议怎么做?

【问题讨论】:

    标签: node.js redis


    【解决方案1】:

    您每次都在使用相同的哈希键进行写入,因此最后一个用户 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") 等。

    希望对您有所帮助。还要检查这个类似的答案:Writing a query to add multiple values to a key in REDIS Hashes?

    【讨论】:

    • 感谢您的回答,我一次性将所有用户插入到 redis 中,如果您认为我做得对,请更新您的答案
    • 如果您不断更新相同的密钥,没有后缀,它将只保留最后一次保存,因此最后一个用户。重点是。您不能将所有用户保存在 channels.59-O 键中,您必须为每个用户指定一个新键(带后缀)。
    • 我不想给钥匙
    • 我不明白,请更新问题并输入您最新的代码。谢谢。
    • 运行你的程序,然后运行redis-cli,然后运行keys *。这将列出数据库中的所有键。然后你会看到 Redis 内部发生了什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    • 2022-01-20
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    相关资源
    最近更新 更多