2010-11-11 97 views
0

我試圖實現從第三方web服務緩存數據到sql server數據庫的一些功能。如何實現數據庫緩存來自第三方Web服務的數據?

我有幾個方法,如

  1. IProduct GetProductById(int productId)
  2. IEnumerable<IProduct> ListProductsAllByCategoryId(int categoryId)
  3. IEnumerable<IProduct> ListProductsPagedByCategoryId(int categoryId, int pageNumber, int itemsOnPage, out int totalRowCount)

所以,我有一個想法,代碼/散列方法簽名+參數作爲Key並將輸出序列化爲Value並將此Key-Value-Pair存儲在中數據庫。

然後我打算只是通過密鑰從數據庫中獲取這些項目。

問題:這是一個好主意,以及如何爲(方法+參數)的每個組合實現唯一鍵?

任何其他解決方案對我來說都是有用的。

+0

對我沒有意義...... – 2010-11-11 10:32:29

+0

過期怎麼辦?你打算無限期地保存數據嗎? – 2010-11-11 10:54:51

+0

是的,我將使用expiration datetime屬性。 – gyromonotron 2010-11-11 11:02:42

回答

2

我不太清楚你的問,所以我會假設你只想緩存你的對象......

當我緩存我使用的方法是有一個靜態GUID爲每個類類型(保持類型唯一),然後我追加「 - 」和對象的ID(它應該是唯一的)。

作爲數據庫的替代品,您是否考慮過使用memcached? - 有.Net版本,它們非常好,只要確保你明白正確的地方和緩存的內容,確保它適用於你的場景。

+1

啊,也許我明白你在說什麼 - 你想緩存給定特定參數的特定方法的特定輸出。你的想法應該工作,但我從來沒有見過任何人這樣做。通常你緩存你的對象並調用你的方法,然後你的方法會查看你是否有這些緩存中的對象,如果沒有去獲取它們。 – 2010-11-11 10:41:12

+0

是的,你是對的。如何將對象存儲在緩存中更正確? – gyromonotron 2010-11-11 11:09:13

+0

是的,所以你的方法是管理緩存,所以你的客戶不必擔心數據來自哪裏...... – 2010-11-12 10:08:01

相關問題