如何填充缓存并保持更新

时间:2010-03-07 03:57:37

标签: java servlets caching jboss

我打算使用ehcache缓存一些信息。通常情况下,我会遵循以下模式:

if data in cache
   return from cache
else
   lookup from source
   put into cache
   return data

但对于这些数据,我希望它始终存在于内存中。我更愿意这样做:

  • 在appserver启动时填充缓存(我正在使用JBoss)
  • 有一个定期更新缓存的“进程/线程/东西”

我的第一个想法是定义一个带有ServletContextListener的servlet来执行初始加载,然后启动一个线程来进行更新。

有没有更好的方法呢?

1 个答案:

答案 0 :(得分:2)

您遇到的问题是首先确定哪些数据进入缓存。我假设缓存小于您希望存储的数据。如果这个案例,为什么要使用缓存?只需将数据存储在内存中即可完成。

话虽如此,一旦你做出决定,我认为你的建议没有错。在早期版本的WAS中重新加载Java代码时,我们实际上使用了类似的方案。修改了应用服务器的部分启动代码,以访问我们想要预编译的页面(一种网络刮刀),这样在用户第一次尝试访问它时就没有延迟。

对于定期更新缓存,这应该由缓存本身完成。如果所有更改都通过缓存(后写或直写),则应自动为您更新缓存,而无需单独的过程。