As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center作为指导。
7年前关闭。
我只想在某些时间段内将某些值存储在tomcat Java Web应用程序的集合中。
该方案是:
添加
添加
添加后,此值仅在5分钟内可用。 5分钟后,应将其从列表中删除。
每个值都会在5分钟的时间(添加后)之后过期,无论它们的最后访问时间如何。
我已经开始使用
我找不到适合此要求的内置缓存机制,如果使用了缓存,则如果更频繁地访问值,它将不会从列表中删除/过期这些值。
如果有人可以给我任何现有实施的指导或参考,我将不胜感激。
7年前关闭。
我只想在某些时间段内将某些值存储在tomcat Java Web应用程序的集合中。
该方案是:
value1
首先添加value2
在1分钟后添加value1
添加
value3
之后立即添加value2
添加
value4
2分钟后添加value1
添加后,此值仅在5分钟内可用。 5分钟后,应将其从列表中删除。
每个值都会在5分钟的时间(添加后)之后过期,无论它们的最后访问时间如何。
我已经开始使用
ConcurrentHashMap
和ScheduledExecutor
来实现它。我找不到适合此要求的内置缓存机制,如果使用了缓存,则如果更频繁地访问值,它将不会从列表中删除/过期这些值。
如果有人可以给我任何现有实施的指导或参考,我将不胜感激。
最佳答案
如果您想手动进行操作,这是一个简单的想法:
创建一个类,用日期包装要存储的类型。
扩展HashMap
,覆盖get()
方法,以便它检查
日期,如果日期过旧,则返回null
,并返回存储的对象
除此以外。
编辑:
如果存在内存问题,则可以每隔X分钟迭代映射以删除过期的值。这样做,请在重写的get()
方法中检查上次清除日期,如果该日期早于X分钟前,请立即进行清除。但是,如果您没有内存问题,您甚至可以跳过此操作。