问题标签 [oscache]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
27538 浏览

java - OSCache 与 EHCache

以前从未使用过这样的缓存。问题是我想从数据库中加载 500,000 多条记录并快速进行一些选择/过滤。

我正在考虑使用缓存,并初步找到了EHCacheOSCache,有什么意见吗?

0 投票
2 回答
2119 浏览

java - 如何使用 spring-modules 为 OSCache 中的对象设置缓存时间?

我有一个需要一些缓存的应用程序,对于一些半静态数据,我希望它们在刷新之前在缓存中停留最长时间(例如 10 分钟)。我的系统只是检索数据,从不更新它,所以我不知道何时使用该属性刷新缓存。在 OSCache 文档中,可以使用编程 API 和 taglib 的配置来设置这样的到期时间,但 spring-modules 文档对此事没有提及。

有谁知道是否/如何做到这一点?

0 投票
1 回答
3129 浏览

java - 在 Ehcache 中设置刷新策略

有没有在Ehcache中指定数据刷新策略?我目前正在将应用程序从OSCache迁移到 Ehcache,除了设置timeToIdletimeToLive.

我想要的是:在从缓存中访问一个元素时,检查它的关联资源,看看它是否比lastUpdateTime缓存元素的更新晚。如果是,刷新缓存;否则从缓存中提供内容。

在 OSCache 中,这是通过捕获NeedsRefreshExceptions 并为元素设置自定义刷新策略来完成的。我已经在文档中搜索了一段时间,但是我找不到任何方法或示例来说明如何在 Ehcache 中完成此操作。

任何帮助,将不胜感激 :)。

亚历克斯

0 投票
1 回答
424 浏览

grails - 如何用 oscache 配置 grails1.2?

我这样做:

并且在

但我只收到此错误:

我该怎么做?

0 投票
1 回答
1119 浏览

caching - 缓存模式:您如何称呼(以及如何替换)OpenSymphony OsCache“组”范式

缓存专家的缓存问题。

语境

我们已经使用 OpenSymphony 的 OsCache 多年,并考虑转向更好/更强/更快/积极开发的缓存产品。

问题

我们使用了 OsCache 的“组条目”功能,在其他地方没有找到。

简而言之,OsCache 允许您在“条目插入时间”指定一个或多个组。稍后您可以使“一组条目”无效,而无需知道每个条目的键。

OsCache 示例

以下是使用此机制的示例代码:

替代方案:匹配器机制

我们使用另一个由前团队成员编写的本地缓存,它使用“键匹配器”模式来使条目无效

在这种方法中,您将定义您的“键”和匹配器类,如下所示:

匹配器:

用法:

这种机制实现简单,但有一个性能缺点:它必须遍历每个条目才能使组无效。(尽管它仍然比通过数据库旋转要快)。

问题

  • 警告:这可能听起来很愚蠢)你怎么称呼这个功能?OsCache 将其称为“缓存组”。JbossCache 和 EhCache 似乎既没有定义也没有实现它。领域?地区?王国?
  • 这种“缓存组/区域”范式是否存在标准模式?
  • 后起之秀的缓存产品(如ehcache、coherence、jbosscache)如何处理这个问题
  • 这个范例不在 jcache 规范中,对吧?(JSR-107)
  • 你如何处理“大规模失效”?缓存很棒,直到它们变得陈旧。允许您使大范围无效的 API 是一个很大的帮助。(例如,管理员想要按下按钮并清除所有缓存的帖子条目,例如,特定论坛)

谢谢

将要

0 投票
2 回答
1679 浏览

hibernate - 什么时候去缓存/二级缓存?有具体的实际场景吗?

我正在开发一个属于汽车制造商的基于 Web 的应用程序,该应用程序是在 Spring-Hibernate 中使用 MS SQL Server 2005 数据库开发的。

通过这个应用程序,最终用户可以通过基于 Web 的界面请求创建汽车、公共汽车、卡车等。当用户登录时,会显示一个 HTML 表单,用于捕获车辆的技术规格,例如,如果有人想请求汽车,他可以指定发动机品牌/型号、轮胎、底盘详细信息等。总共有 100 个表单元素在创建车辆请求屏幕上,其中 30% 是用于显示选项的下拉菜单(选择框)(即允许用户选择其中之一)。这些 SELECT 框从存储在数据库中的值(主数据)中填充。通过在后端运行存储过程,此主数据每周至少更改一次。

该应用程序在全球约有 10,000 名用户,我们预计每天最多有 5000 次新车请求,即显示 5000 次“创建车辆”表单。

我的问题是,我是否需要使用二级缓存选项来存储从主数据显示的表单字段的值?

由于这些值是从一组每周仅更改一次的主表中显示的,因此我认为缓存主数据将有助于提高性能,但我不太确定,因为我还没有将我的应用程序移动到生产以查看真实性能并查看我是否真的需要缓存。

如果我使用缓存,我可能需要花一两个星期来弄清楚如何配置它,我不想花一两个星期看不到任何真正的好处?

在这方面需要专家帮助。此外,如果有人可以分享实际需要缓存的实际场景,那将有很大帮助。

0 投票
1 回答
2395 浏览

java - 指定全局 EhCache 容量

我正在尝试将我的项目代码从 OSCache 迁移到 EhCache。

我们不仅将 OSCache 用作二级 Hibernate 缓存提供程序,而且还用于存储其他不同性质的对象。由于缓存键不重叠,它们都愉快地共享同一个缓存实例,而不会发生任何冲突。

向 EhCache 迁移时的一大区别是每个区域都有不同的缓存实例。这可能很好,因为它可以提高查找速度,因为不同性质的数据是分开存在的。不幸的是,这有配置地狱的代价。让我解释。

在 OSCache 世界中,我会将我的缓存容量配置为 10000。现在,如果特定安装需要/可以提供更多 RAM,我可以轻松地将其增加到 50000,这样就可以了。现在在 EhCache 中,我必须按此增量的一部分为每个区域更改设置!

此外,一个安装可能对 X 类型的对象有更高的使用率,而另一种安装可能更喜欢 Y 类型的对象的更高流失率。我们有几十个安装,每个安装会有数百个不同的缓存。为此,我们将不得不雇佣一群人,除了监控缓存模式和调整设置之外什么都不做!

我期待CacheManager有某种全局缓存容量设置,每个内部缓存都会争取更多容量,具体取决于条目使用情况。但是,我发现设置缓存容量的唯一方法是通过CacheConfiguration多对一对抗CacheManager.

到目前为止,我能看到的唯一选择是尝试强制 Hibernate 为所有实体使用一个全局缓存。有人知道该怎么做吗?对于我的场景,还有其他更好的解决方案吗?

0 投票
1 回答
1140 浏览

hibernate - Hibernate 的集群感知缓存与 WebSphere Application Server 结合使用

标题来自以下链接: Using Spring and Hibernate with WebSphere Application Server

不知道这是否仍然是一个真实的说法?

我有兴趣将应用程序从使用 IBM DistributedMap 和 DistributedObjectCache 转移到类似于 ehCache 或 osCache 的东西。到目前为止,从我对 IBM 的两种缓存模型的阅读来看,我看不到可以在哪里缓存查询。我可能会遗漏一些东西,如果是这样,请将我引导到正确的位置。我们正在使用 WAS 7.x。

在集群环境中使用 ehCache 或 osCache 有什么问题吗?

0 投票
1 回答
951 浏览

macros - 关于在 Freemarker 文件中使用 Struts2 包含标记的问题

这是我的场景:</p>

1、在行动中,变量id是declear就像吹(TestAction.java):


2、web.xml中的配置:


3、在freemarker文件(test.ftl)中调用:


4、错误信息:


我的代码有问题吗?

0 投票
2 回答
1658 浏览

java - 如何在 Tomcat 5.5 的 webapp 中控制第三方组件的日志记录?

我们在 Linux 上使用 Tomcat 5.5。我们的 webapp 使用 log4j 进行日志记录(基于功能且记录器不多),并有意将记录器的可加性设置为 false。我们的记录器记录到我们自己的日志文件中。他们都没有登录到控制台。

我们遇到的一个问题是,当我们的记录器级别设置为 DEBUG 时,我们开始在 catalina.out 中从 3rd 方组件(尤其是 oscache)获取大量调试日志记录。

.../common/classes 中有一个最小的 log4j.properties 文件:

.../webapps/ourapp/WEB-INF/classes 中没有 log4g.properties 文件。

我尝试的第一件事是更改为,log4j.rootLogger=ERROR, A1但这没有任何区别。

我尝试的下一件事是创建一个包含单行的 .../webapps/ourapp/WEB-INF/classes/log4j.properties 文件

看看这是否会停止 oscache 日志记录。确实如此,但令人惊讶的是(对我而言)它停止了所有不需要的日志记录,而不仅仅是 oscache 日志记录。所以我评论了这条线并再次尝试。仍然没有任何不需要的日志记录。我将文件移到一边,现在不需要的日志记录又回来了。我创建了一个长度为零的 log4j.properties,所有不需要的日志记录又消失了(!)虽然这是我想要的短期内容,但它让我想知道还有哪些其他日志记录被丢弃(以及为什么!)。所以我只是依靠它感到不舒服。

Tomcat 5.5 文档中的“日志”一章只是说您可以通过将属性文件放在 WEB-INF/classes 中来进行每个应用程序的配置,但没有(至少我找不到)谈论它如何与在 common/classes 中指定的配置。

所以:

  • 第 3 方组件如何首先记录到 catalina.out?我猜他们的日志记录可能会冒泡到根记录器,但是为什么即使根记录器级别设置为错误,他们仍然会记录?
  • 为什么将记录器上的记录器级别设置为 DEBUG 会启动此记录?我们的记录器有自己的名称,因此 oscache 和其他东西不可能是我们记录器的祖先。
  • 为什么即使是零长度的 WEB-INF/classes/log4j.properties 文件也会停止一大堆日志记录?
  • 我怎样才能以“正确”的方式做到这一点并以有意义的方式限制日志记录,而不是依靠一些奇怪的(对我而言)副作用来关闭它?


越来越好奇。我尝试了马特关于打开调试的建议。我还为 webapp 制作了一个更广泛的 log4j.properties 文件:

当tomcat启动时,我看到:

但是尽管 oscache 记录器的级别设置为错误,我仍然在日志中看到类似这样的内容:

如果我将 oscache 记录器级别强制为 ERROR(log4j 调试输出显示我是),那么为什么要发送此 DEBUG 消息?子记录器覆盖代码中的级别?

我注意到的是,如果我在 webapp 的 log4j.properties 文件中取消注释 oscache 记录器的“可加性”行,那么日志记录确实会消失。因此,似乎 oscache 日志记录依赖于祖先附加程序,而不是它自己的。但似乎更奇怪的是,将 oscache 记录器级别设置为 ERROR 并没有阻止这些事情。