如何在nodejs rest服务中以redis形式存储对象数据

时间:2017-05-16 17:17:02

标签: node.js rest redis

我正在尝试在nodejs中创建休息Web服务,并使用redis进行缓存以提高性能。我想保存为具有id,商品名称和供应商的商品。

我不想让所有这些都拥有不同的钥匙。单键中的操作方法是什么。

app.get('/insertOffers', function(req, res) {
    const {id, offerName, offerVendor} = req.query;
    client.set('offers', ) // client is my redis client
});

1 个答案:

答案 0 :(得分:2)

正如@drdaeman在评论中所说,使用Redis Hash可以查询单个密钥,其中子密钥或散列密钥是唯一密钥。该命令看起来如下所示:

HSET offerId offerJSONString
HGET offerId offerJSONString

因此,在您的快递功能中,您可以执行以下操作:

app.get('/insertOffers', function(req, res) {
    let offer = {
      id: req.query.id, 
      offerName: req.query.offerName,
      offerVendor: req.query.offerVendor
    }

    client.hset('offers', offer.id, JSON.stringify(offer), yourCallbackFunction);
});

注意,当你获得数据时,你需要JSON.parse它。

client.hget('offers', offerId, function(err, offer){
  let offer = JSON.parse(offer);
  // do something with offer
})

我认为单个密钥的首选项可能是有效的,就像您希望稍后使用单个命令删除所有商品而不进行查找一样。 Redis真的很快,所以对于redis服务器的2次往返,不应该是一个沉重的性能成本。