我想在Java中實現緩存,該緩存應該緩存給定ID的標記。 (一個ID的0-N標籤) 在1億個實體中有大約1000個唯一標籤,但實際數量可能會有幾千個。 它不需要考慮ID /標記驅逐。
如果存在比我們可以在內存中緩存更多標籤的緩存,則預計會拋出OutOfMemoryError。
但是,設計應該確保儘可能少的內存來緩存標籤。在Java中實現高速緩存以讀取性能,完全沒有驅逐
緩存有一個方法 'getTags()'方法接受一個id並返回實體的標籤。
這種方法在最壞的情況下(禁止垃圾回收)需要幾個012納秒的時間。它可以在幾毫秒內被稱爲1000年的時間。 緩存應該設計用於多線程訪問,在幾ms內請求獲取標籤的數量爲1000的 。
請建議一個好的數據結構/集合使用,可以爲我提供這樣的性能。
看看[Guava caches](http://code.google.com/p/guava-libraries/wiki/CachesExplained) – vanOekel
請描述緩存是如何填充和/或更新的。 – leventov
@vanOekel番石榴高速緩存具有驅逐戰略,但性能差和內存佔用。 OP正在要求相反。 – leventov