LFUCache

介绍

LFU(least frequently used) 最少使用率策略。根据使用次数来判定对象是否被持续缓存(使用率是通过访问次数计算),当缓存满时清理过期对象,清理后依旧满的情况下清除最少访问(访问计数最小)的对象并将其他对象的访问数减去这个最小访问数,以便新对象进入后可以公平计数。

使用

  1. Cache<String, String> lfuCache = CacheUtil.newLFUCache(3);
  2. //通过实例化对象创建
  3. //LFUCache<String, String> lfuCache = new LFUCache<String, String>(3);
  4. lfuCache.put("key1", "value1", DateUnit.SECOND.getMillis() * 3);
  5. lfuCache.get("key1");//使用次数+1
  6. lfuCache.put("key2", "value2", DateUnit.SECOND.getMillis() * 3);
  7. lfuCache.put("key3", "value3", DateUnit.SECOND.getMillis() * 3);
  8. lfuCache.put("key4", "value4", DateUnit.SECOND.getMillis() * 3);
  9. //由于缓存容量只有3,当加入第四个元素的时候,根据LRU规则,最少使用的将被移除(2,3被移除)
  10. String value2 = lfuCache.get("key2");//null
  11. String value3 = lfuCache.get("key3");//null