如何将对象数据存储在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次往返不会有太大的性能成本。