每次我需要连接到服务时,我都会为此开发一个应用程序。我想将每个搜索结果保存在缓存中以备将来使用。有没有这样做的选择?
我听说过Memcached。但我没有找到任何正确的网站供参考。我们可以像在Hibernate中一样使用Ehcache吗?
发布于 2011-03-26 17:13:31
这里有一篇关于缓存的好文章。http://www.javaworld.com/javaworld/jw-05-2004/jw-0531-cache.html?page=1
发布于 2011-03-26 17:32:47
Java中有多种缓存解决方案。其中包括英飞凌、EhCache和OSCache。
它们都可以独立使用,例如,它们都不是专门为Hibernate缓存提供程序而构建的。
缓存之间的功能略有不同。例如,Infinispan为事务提供了一流的支持(这意味着如果插入项的事务回滚,该项将不会被插入到缓存中)。EhCache非常支持非常大的进程内缓存,但不支持堆存储。
OSCache提供了非常方便的标记来缓存JSP页面上的内容(但这不适用于JSF)。
它们中的大多数都能够执行典型的溢出到磁盘的操作,并且有一些机制来使陈旧的条目无效。例如,Infinispan有驱逐策略,这些策略确实从缓存中删除了陈旧的条目(节省内存)。而OSCache从来不会真正从缓存中删除条目,而是将其标记为陈旧。当该条目被访问时,会提醒调用者刷新该条目(过去是一个异常,但现在可能不同了)。
这些通常就是将“缓存”与简单的并发hashmap区分开来的原因。如果您的要求不高,请不要忽略这个简单的解决方案。缓存可能比较难配置,而应用程序范围内的并发映射也可以满足您的需求。
发布于 2012-10-30 22:16:37
你可以使用OSCache的jsp标签很容易地缓存每个用户(即会话)的数据。例如,设想一个web应用程序,其中某个特定用户的“工作列表”没有更改,然后始终为缓存的(即已经生成的) jsp提供服务,直到列表发生更改(通过应用程序中其他地方的刷新缓存调用)。
使用缓存标签包装jsp层上的代码,如下所示:
<cache:cache key="foobar" scope="session">
<%= myBean.getData() %>
</cache:cache>意味着java代码myBean.getData()将在每个会话中只调用一次(除非另外刷新)
https://stackoverflow.com/questions/5441285
复制相似问题