使用Java中的ConcurrentHashMap实现缓存

时间:2017-04-30 06:34:40

标签: java caching

如何实现缓存以在内存中存储100个元素,并实现LRU算法,以便在缓存已满时删除最旧的元素。

1 个答案:

答案 0 :(得分:3)

缓存类似于ConcurrentMap,但不完全相同。最根本的区别在于ConcurrentMap会持久保存添加到其中的所有元素,直到它们被明确删除。另一方面,缓存通常配置为自动逐出条目,以限制其内存占用。

由于它是一个生产环境,我建议使用一些现有的库,如google guava cache,而不是重新发明轮子。

但是,如果您希望自己设计缓存,则需要考虑以下几点:

  1. 最大允许尺寸/最大元素数
  2. 人口逻辑
  3. 驱逐逻辑
  4. 到期逻辑
  5. 线程安全
  6. 内存泄漏
  7. 起点应该是定义缓存需要通过接口公开的功能。我确定单独的ConcurrentHashMap不足以实现上述功能。您可能需要使用其他数据结构来扩充它。