我们如何在应用程序范围内存储数据以用于缓存目的?

srv*_*srv 4 java jsp caching web-applications

我在应用程序范围内存储数据.我想在每小时后清除这些数据.实际上使用它作为缓存一小时.实现这个的最佳方法是什么?之前我们使用会话范围来存储这些数据,并且在会话到期后它过去会过期.由于此数据在整个应用程序中是唯一的,因此我们希望将其存储在应用程序范

Gui*_*ume 5

对于一个非常简单的缓存,您可以使用Google番石榴的MapMaker:以下是从javadoc中获取的示例:

   ConcurrentMap<Key, Graph> graphs = new MapMaker()
       .concurrencyLevel(4)
       .softKeys()
       .weakValues()
       .maximumSize(10000)
       .expireAfterWrite(10, TimeUnit.MINUTES)
       .makeComputingMap(
           new Function<Key, Graph>() {
             public Graph apply(Key key) {
               return createExpensiveGraph(key);
             }
           });
Run Code Online (Sandbox Code Playgroud)

有这两种方法expireAfterWriteexpireAfterRead来做你想要的东西.并且免费提供线程安全Map,如果你需要/需要它,有弱值,软键和懒惰评估:)