【专题】LRU

本文详细介绍了LRU(最近最少使用)缓存淘汰算法及其应用场景,并提供了两种不同的Java实现方式,一种基于LinkedHashMap,另一种利用了apache.commons.collections.map.LRUMap。此外,还讨论了在wxxr-smslog-search项目中如何使用LRU算法来优化IndexWriter和IndexReader的缓存管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

包含如下内容:


一. LRU算法

http://nemogu.iteye.com/blog/1415874

http://nemogu.iteye.com/blog/1552318

 

二. 算法实现

实现1 基于LinkedHashMap,线程安全的java实现

 

http://nemogu.iteye.com/blog/1418340

 

实现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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值