我打算使用ehcache缓存一些信息。通常情况下,我会遵循以下模式:
if data in cache
return from cache
else
lookup from source
put into cache
return data
但对于这些数据,我希望它始终存在于内存中。我更愿意这样做:
我的第一个想法是定义一个带有ServletContextListener
的servlet来执行初始加载,然后启动一个线程来进行更新。
有没有更好的方法呢?
答案 0 :(得分:2)
您遇到的问题是首先确定哪些数据进入缓存。我假设缓存小于您希望存储的数据。如果不这个案例,为什么要使用缓存?只需将数据存储在内存中即可完成。
话虽如此,一旦你做出决定,我认为你的建议没有错。在早期版本的WAS中重新加载Java代码时,我们实际上使用了类似的方案。修改了应用服务器的部分启动代码,以访问我们想要预编译的页面(一种网络刮刀),这样在用户第一次尝试访问它时就没有延迟。
对于定期更新缓存,这应该由缓存本身完成。如果所有更改都通过缓存(后写或直写),则应自动为您更新缓存,而无需单独的过程。