java LRU缓存:带有时间戳的LinkedHashMap?

java LRU缓存:带有时间戳的LinkedHashMap?,java,linkedhashmap,lru,Java,Linkedhashmap,Lru,我需要在Java中实现一个到期时间为600秒的LRU缓存。我搜索并找到了内置的LinkedHashMap类。当大小超过限制时,它可以删除最旧的元素,但它没有元素的过期时间 我能想到的是在将元素放入缓存时关联时间戳。检索元素时,检查其时间戳;如果时间戳早于600秒,则从缓存中删除元素并返回“not found” 还有更好的主意吗?有内置的解决方案或最佳实践吗?我想避免重新发明轮子。直接使用它怎么样 它支持所有的 加载缓存和具有任意组合的缓存实例的生成器 以下特点之一: 自动将条目加载到缓存中 超

我需要在Java中实现一个到期时间为600秒的LRU缓存。我搜索并找到了内置的LinkedHashMap类。当大小超过限制时,它可以删除最旧的元素,但它没有元素的过期时间

我能想到的是在将元素放入缓存时关联时间戳。检索元素时,检查其时间戳;如果时间戳早于600秒,则从缓存中删除元素并返回“not found”

还有更好的主意吗?有内置的解决方案或最佳实践吗?我想避免重新发明轮子。

直接使用它怎么样

它支持所有的

加载缓存和具有任意组合的缓存实例的生成器 以下特点之一:

  • 自动将条目加载到缓存中
  • 超过最大大小时最近最少使用的逐出
  • 条目的基于时间的过期,自上次访问或上次写入后测量
  • 键自动包装在弱引用中
  • 值自动包装在弱引用或软引用中
  • 收回(或以其他方式删除)条目的通知
  • 缓存访问统计数据的累积
就用这个怎么样

它支持所有的

加载缓存和具有任意组合的缓存实例的生成器 以下特点之一:

  • 自动将条目加载到缓存中
  • 超过最大大小时最近最少使用的逐出
  • 条目的基于时间的过期,自上次访问或上次写入后测量
  • 键自动包装在弱引用中
  • 值自动包装在弱引用或软引用中
  • 收回(或以其他方式删除)条目的通知
  • 缓存访问统计数据的累积

我建议不要自己实现它,看看已经可用的实现:

  • 番石榴缓存是一个不错的下降选项(它已经被推荐了,所以我不会在这里添加链接)
  • 一个非常好的缓存实现 如果你想知道两者之间的区别,请阅读

    我相信这两种方法都能让你在功能方面有所收获。 此外,如果您使用的是Spring之类的框架,它与之集成(较新版本使用咖啡因,较旧版本使用番石榴):


    我建议不要自己实现它,请查看现有的实现:

  • 番石榴缓存是一个不错的下降选项(它已经被推荐了,所以我不会在这里添加链接)
  • 一个非常好的缓存实现 如果你想知道两者之间的区别,请阅读

    我相信这两种方法都能让你在功能方面有所收获。 此外,如果您使用的是Spring之类的框架,它与之集成(较新版本使用咖啡因,较旧版本使用番石榴):

    阅读有关改造的文件。还可以阅读关于改造的文档。阿尔索