2013-03-25 20 views
15

我正在使用node.js來編寫一個Web服務,它調用一些數據的API,但我被每個月的API調用數量限制,所以我希望緩存從API中檢索到的數據,以便我可以使用緩存的數據提供它,並以一定的時間間隔從API重新獲取數據。正確的方法來緩存來自API調用與nodejs的數據

這是一個很好的解決這個問題的方法嗎?我應該使用哪種緩存框架?我查看了node-redis,但我並不認爲一個關鍵值存儲適合於這些數據。

謝謝!

+1

我知道這是舊的,但只是好奇 - 在你的http調用節點中使用了什麼庫? – jpodwys 2015-06-03 18:48:39

+1

如果您使用卓越的superagent庫來處理來自節點的API調用,請考慮查看superagent-cache。您可以將redis緩存內置到您的superagent查詢中。免責聲明:我寫了superagent-cache。 – jpodwys 2015-07-14 00:09:43

回答

30

我不同意你關於Redis的看法。 Redis是一個非常強大的鍵值存儲,可以輕鬆用於您想要的內容。它被設計成將東西傾倒並重新取出。在你的情況下,你可以通過將查詢作爲關鍵字保存到Redis中來輕鬆緩存API響應(如果這是一個你調用的REST API,你可以使用URL或序列化數據作爲關鍵字),並簡單地緩存作爲字符串化的JSON對象(或XML字符串,如果你碰巧得到的)的響應。

您還可以設置緩存數據的到期時間,並且在時間到期時它將被清除。

然後,您可以將您的API調用包裝在檢查緩存的幫助函數中,並在存在該值的情況下返回該值。如果不是,則會發出API請求,將其添加到緩存中,然後將其返回。

這可能是最直接的解決方案,似乎很好地涵蓋了您的用例。

+0

非常感謝您的回覆!我不熟悉redis,因此我的初步評估。你寫的是有道理的,我將爲我的網絡服務使用這個解決方案。 – 2013-03-25 20:53:22

+2

這也將避免重新獲取緩存的數據,直到它真正需要時爲止,而不是按照時間間隔進行,而不管它是否按照問題的建議使用。 – 2014-04-04 16:51:01

+0

對於這個問題,這真的是很好的答案,您是否熟悉某種教程或示例代碼以瞭解如何在節點中使用此設置? – 2017-06-06 12:21:31

相關問題