【问题标题】:How to delete on based of subkey using hset in redis in node js app如何在节点js应用程序的redis中使用hset基于子键删除
【发布时间】:2017-05-17 05:06:25
【问题描述】:

我试图在我的nodejs 应用程序中使用redis。我能够完美地保存和检索价值。我正在使用哈希,它允许我拥有单个唯一键以及子键。这里 offer id 是我的子键,offer 是键。

我正在保存如下优惠

let offer = {
    offerId: req.query.id,
    offerName: req.query.offerName,
    offerVendor: req.query.offerVendor
}
client.hset('offer', offer.offerId, JSON.stringify(offer), redis.print);

并像下面这样检索值

try {   
    console.log('ping response:', await client.ping());
    const offerId = req.query.id;
    client.hget('offer', offerId, function(err, reply){
        let offer = JSON.parse(reply);
        res.send(offer);
    });
} catch(err) {
    console.log('ping error:', err);
}

我想删除基于 id 的优惠,就像基于 id 保存或获取一样。我浏览了文档https://github.com/NodeRedis/node_redis#usage-example,但没有找到。

根据 id 删除offer的方法是什么?

【问题讨论】:

  • 我们可以使用“del”,参考以下链接github.com/NodeRedis/node_redis/blob/master/test/commands/…
  • @Hemanth 我认为它会删除完整的优惠密钥,您知道如何根据子密钥删除吗?在我的情况下提供 ID
  • 不知道,但我建议通过使用下划线/lodash删除子键来恢复并将其再次存储到redis中。
  • @Hemanth Nah 这可能是低效的方法
  • 是的...我知道它的效率很低,直接在 git hub 中询问 redis 人。平均时间你可以用临时修复移动。试试这样 ``` client.del('offer', offerId, function(err, reply){ }); ```

标签: node.js redis node-redis


【解决方案1】:

如果您已经拥有商品 ID,则可以使用 hdel 命令将其从商品哈希中删除。您的代码如下所示:

client.hdel('offer', id)

调用的结果将是删除键数的整数计数。如果您不知道客户端 ID,可以使用 hscan 命令查找。

【讨论】:

    猜你喜欢
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2020-10-26
    • 2017-03-31
    • 1970-01-01
    • 2020-06-29
    相关资源
    最近更新 更多