# iCache **Repository Path**: cliveCode/iCache ## Basic Information - **Project Name**: iCache - **Description**: 常见的缓存算法简单实现 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2017-10-16 - **Last Updated**: 2020-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # iCache 常见的缓存算法简单实现。 基于 **模板模式** 构建整个项目,UML类图见doc/UML-1.0.asta。 # 过期策略 - FIFO(First In First Out) 先进先出策略,最先放进缓存中的缓存条目最先被移除。使用LinkedHashMap实现。 - LRU(Least Recently Used) 最久未使用策略,使用时间距离现在最久的那个缓存条目被移除。使用LinkedHashMap的accessOrder模式实现。 - LFU(Least Frequently Used) 最少使用策略,使用次数最少的那个缓存条目被移除。遍历整个缓存,找出使用次数最少的那个缓存条目并移除,使用HashMap实现。不过,这个实现过于简单,有空考虑使用优先队列+HashMap实现,减少遍历整个缓存带来的性能损耗。 - TTL(Time To Live) 存活期,清除存活期已过的缓存条目。嵌入到上述三个算法的实现中。 - TTI(Time To Idle) 空闲期,即一个缓存条目多久没被访问就从缓存中移除,实际上就是及时的TTL。开启一个daemon线程循环遍历整个缓存或者使用ScheduleThreadPool调度删除缓存条目的任务即可。