如何将对象数据存储在redis中的nodejs rest服务中

我正在尝试在nodejs使用其他Web服务,并使用nodejs进行caching以提高性能。 我想保存为具有ID,报价名称和供应商的报价对象。

我不想有不同的关键。 在一个单一的关键是怎么做。

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

正如@drdaeman在评论中所说,使用Redis Hash提供了查询单个密钥的能力,其中子密钥或散列密钥是唯一密钥。 该命令将如下所示:

 HSET offerId offerJSONString HGET offerId offerJSONString 

所以在你的快捷function中,你可以做如下的事情:

 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次往返不会有太大的性能成本。