Iam尋找適合我們的.net Web服務的某種查詢緩存的合適數據結構,該服務獲取xml作爲查詢並返回xml作爲結果。查詢緩存的哪個數據結構?
的流程如下:用戶給出了一個查詢串(〜2kb的尺寸),並得到一個結果(〜50KB的大小)。最後n個查詢及其相應的結果被緩存,所以我們需要一個O(1)查詢查詢 - >結果。如果緩存已滿(cache_size = n),則應從緩存中刪除最早的項目。
所以在最後我需要一個數據結構,作品大多像一個隊列(排隊和出隊在O(1)),而且還支持O(1)查找像一本字典的項目。
我的第一個想法是使用從查詢映射到結果的字典。爲了跟蹤項目的順序,我將使用一個也包含查詢的隊列。但問題是,我會浪費內存,並且將使所有這些長查詢字符串的查找變得更慢。我可以使用另一個字典將查詢映射到創建的唯一ID值,以便查詢字符串僅包含在一個集合中。
是不是有這個恕我直言,簡單的任務更簡單,更高效的解決方案?
我不認爲你的解決方案會浪費太多的內存(無論查詢字符串的大小),因爲隊列只能持有一個引用(32位)到查詢字符串。 – 2011-04-07 09:54:11