2008-11-13 66 views
2

我正在做一些設計(最初是針對Java)(但是可能會擴展到.NET將來?),我對術語「緩存」和「池子」。緩存/池/緩存池之間的區別指南

據我所知,差異的主要觀點是它們中包含的是什麼?

什麼時候應該使用什麼指導方針?

那麼什麼是在一些文章中提到的「緩存池」呢?

回答

1

緩存通常用於保存昂貴操作的結果或優化檢索結果。

用於描述可供一個或多個應用程序使用但可以控制這些資源數量的資源集合。

我沒有穿過術語「緩存池」運行 - 但基於快速審查,這似乎用於緩存,或由池管理的高速緩存的集合。

0

我同意Ken並添加一點 - 如果某些或所有資源隨時從中刪除,則緩存不會影響您的系統 - 數據很容易重現/重新設置,並且重放通常是自動的(如果緩存中不存在緩存,則緩存會生成一個緩存,然後將其保存並返回給您),那麼您可以向緩存請求某些內容。

「池」可以是任何東西,但您不只是刪除池對象,因爲它們是舊的 - 通常池包含一些資源的獨特的,可能不可重現的實例。

+0

通常情況下,池包含昂貴的創建對象。我不同意池中的項目在一般意義上是「獨特的或不可重現的」。 – 2009-03-05 23:35:22

4

雖然他們都指的是保持身邊的東西,但他們是完全不同的,我不會說他們是可以互換的。

緩存 - 存儲常用值,通常是因爲查找和/或創建不平凡。例如如果經常使用數據庫的查找表,或者從磁盤上的文件讀取值,那麼將其保存在內存中並定期刷新它會更有效。

緩存只管理緩存中的對象生存期,但不對緩存中保存的內容施加語義。緩存也不會創建項目,而只是存儲對象。

- 術語來描述由池本身管理的一組資源。例如(數據庫)連接池 - 當需要連接時,它從池中獲取,並在完成時返回到池中。

池本身處理創建和銷燬池中的對象,並管理可以在任何時候創建多少個對象。

緩存池 - 大多數似乎描述存在的(獨立?)緩存的數量。例如。一個asp.net應用程序對每個應用程序域有1個緩存(緩存不在asp.net應用程序之間共享)。從字面上看是一堆緩存,儘管這個詞似乎很少使用。