正如@drdaeman说,在评论,使用Redis的哈希为您提供查询一个键,其中子键或哈希键是一个独特的密钥的能力。该命令将类似于以下内容:
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。解析它。
client.hget('offers', offerId, function(err, offer){
let offer = JSON.parse(offer);
// do something with offer
})
我想了一个关键的偏好可能是有效的,如果你想以后删除所有用一个命令中的报价,没有查找等。 Redis的速度确实很快,所以在Redis服务器上进行2次往返时,不应该付出沉重的性能成本。
如果你真的想把它全部放在一个键里,可以考虑使用[哈希](https://redis.io/topics/data-types-intro#redis-hashes),并且[HGET '/'HSET'](https://redis.io/commands#hash))而不是'GET' /'SET'。但是,哈希项不能有独立的过期时间。通常在Redis中有很多密钥是非常有用的,所以使用''client.set('offer:{id}',JSON.stringify({name:offerName,vendor:offerVendor})) ''应该是要走的路。 – drdaeman
@drdaeman我按照你的建议保存了'client.set('offer:{id}',JSON.stringify({name:offerName,vendor:offerVendor}));'它工作,但是当我试图获得offer offer id明智然后它不起作用。无论我传递什么ID,它总是返回相同的最后保存结果。不是明智的。你能提出建议,当我通过'client.get('offer:{id}',function(err,reply){console.log(reply); }')时,我应该如何实现这种方式。提供ID明智。我认为它是覆盖最后的数据在提供不保存id明智也 –