包含如下内容:
实现1 基于LinkedHashMap,线程安全的java实现
实现2 apache.commons.collections.map.LRUMap的java实现
1.为什么在wxxr-smslog-search项目中IndexWriter和IndexReader要存放在基于LRU算法的LRUMap里?
LRU指最近最少使用,该算法的一个运用场合:当一个cache已满,而有新元素会被加进来,势必要从cache里拿出一个元素出来腾出位置,这就涉及一个问题:将cache里的哪个元素拿出来呢?LRU算法可以决定让最近最少使用的元素被逐出。
在这个项目中,出于查询效率的考虑,要求 IndexReaderCache要保留90个IndexReader(最近3个月,每天一个 IndexReader ),当cache满了后,就会经常出现需要将cache中元素逐出的操作。基于上面要求,项目中考虑将IndexWriter和IndexReader存放在实现了LRU算法的LRUMap里。
四. 其他阅读文章
1.O(1)LRU Cache的python实现
http://code.activestate.com/recipes/252524-length-limited-o1-lru-cache-implementation/
2.High-Throughput, Thread-Safe, LRU Caching(ebay)
http://www.ebaytechblog.com/2011/08/30/high-throughput-thread-safe-lru-caching/
3.stackoverflow里关于LRU
http://stackoverflow.com/questions/221525/how-would-you-implement-an-lru-cache-in-java-6
4.Redis as an LRU cache
http://antirez.com/post/redis-as-LRU-cache.html