2012-01-24 71 views
21

我有JSON(< 1k)通過node.js存儲在Redis中。將它存儲爲對象或字符串有什麼優點和缺點?我錯過了其他選擇嗎?所有處理最終都會發生在客戶端,因此不需要轉換爲對象。我應該如何在redis中存儲JSON?

SET

var images = JSON.parse(data);   // data is already JSON, is this needed? 
callback(images);      // sends result to the user 
r.set('images:' + req.query, images); // saving the object 

GET

callback(images); 

回答

32

可以存儲JSON在redis的或者作爲在專用鍵(或一組/列表的構件/值)純字符串或在hash結構。如果您將node_redis文檔查看到Friendlier哈希命令部分您會看到它爲您提供了一些用於處理基於JSON的數據的有用方法。這種方法的優點是,它允許您只獲取/設置原始對象的一部分,與普通字符串相比,它可能也是consume less memory

+0

謝謝!看起來像散列結構的con是檢索速度慢得多,因爲你必須遍歷每個字段來重建原件。 – tofutim

+1

您可以使用HGETALL命令檢索整個散列,雖然時間複雜度爲O(n),但我認爲只有大量字段/值對纔會影響性能。 – yojimbo87

+1

Riendlier哈希命令的鏈接https://github.com/mranney/node_redis#friendlier-hash-commands – ravindrab