我正在尝试在nodejs
中创建休息Web服务,并使用redis
进行缓存以提高性能。我想保存为具有id,商品名称和供应商的商品。
我不想让所有这些都拥有不同的钥匙。单键中的操作方法是什么。
app.get('/insertOffers', function(req, res) {
const {id, offerName, offerVendor} = req.query;
client.set('offers', ) // client is my redis client
});
答案 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次往返,不应该是一个沉重的性能成本。