问题标签 [jcs]

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 投票
1 回答
602 浏览

jcs - JCS:如何访问在同一服务器上运行的两个不同应用程序中的缓存

jcs:我有两个应用程序在 Glassfish 中运行。如何将存储在一个应用程序中的缓存检索到另一个应用程序

0 投票
1 回答
782 浏览

java - Java缓存作为数据库?

java缓存库如何用作数据库?

我使用类似EhcacheJCS代替数据库的东西?

是否Ehcache只支持 Enterprise Ehcache 的持久化策略 = localRestartable,即付费版本?

这是否意味着免费版本不适合数据库替换?

更新

为什么持久缓存不能替代数据库?数据库引擎操作和使用 dist 存储的缓存操作之间的主要区别是什么?

这是 neo4j(图形数据库)和 Ehcache(缓存)之间的比较示例:http://vschart.com/compare/ehcache/vs/neo4j-community它们看起来具有可比性。

0 投票
1 回答
141 浏览

java - JCS 还是 java.util.Map,哪个在时间上效率更高?

我们正在编写一个测试框架,并且我们希望维护一个用于在套件级别存储对象的数据结构,对象从 int 到 slf4j Logger 不等。我不清楚使用哪种数据结构,哪个更有效。

0 投票
1 回答
84 浏览

java - 如何对返回的数据库事件使用缓存机制

我的数据库(Oracle)在执行 DML 操作时推送 rowID,并且我的 java 程序有一个侦听器来处理事件并获取 rowID。

例如:以下是 DML 操作从数据库返回的值

ROW:操作=更新,ROWID=AAASjgAABAAAVapAAA

现在我必须将此 rowID 存储在缓存中?我如何在java中做到这一点?任何线索都会有所帮助。我正在考虑 JCS 或 Ehcache。哪一个更可取?

通过侦听器处理作为 DB 事件的一部分返回的 RowID:

0 投票
2 回答
1444 浏览

java - JCS 1.3 关机后从磁盘刷新缓存

我正在尝试使用 JCS 1.3 创建一个永久磁盘缓存。我希望缓存能够关闭,然后在我下次使用它时从磁盘重新加载。我有很多数据要从需要很长时间才能运行的数据库中填充,如果缓存只是从磁盘重新加载,它会快得多。我已经尝试通读 JCS 文档并使用他们的配置示例开始工作,但到目前为止还没有成功。这是我正在使用的配置

这是我正在运行的一个非常简单的测试,以确保我的配置正确。

JCS 缓存 = JCS.getInstance("myRegion1"); cache.put("key", "我的价值");

这是我在输出中得到的:

有人能指出我正确的方向吗?不确定这是否是我的配置中的问题,或者需要在代码中执行某些操作以告诉它从磁盘刷新。

0 投票
1 回答
307 浏览

java - JCS CompositeCacheAttributes 不能转换为 ICompositeCacheAttributes

我正在以同样的方式使用我以前使用过的 JCS,没有任何问题。

当服务器启动时,我手动设置缓存属性

以这种方式设置时会引发错误

我在其他项目上使用了完全相同的方法,没有问题。为什么我现在得到这个异常?

编辑

我正在从

在此之前,我也尝试过获得同样问题的 2.0-beta 版本

编辑 2

如果其他人面临同样的问题并希望跟随,我已经在 J​​ira 开了一张票。

0 投票
1 回答
1623 浏览

java - 在 Java 中寻找持久重启的 LRU 磁盘缓存解决方案 - ehcache、guava、JCS 不合格

我们有一个处理图像数据的应用程序,在单台机器上运行。处理非常昂贵(10 到 30 秒),因此我们将生成的文件缓存在磁盘上。这些文件也很大,因此我们必须在缓存达到可配置边界时对其进行修剪。缓存的图像文件本身是由不同的非 Java 进程创建的。并且有些用户操作可能会导致某些缓存条目变得无效。

当前实施:

目前我们正在为此使用自定义缓存管理器,并将一些元数据单独存储在文件系统结构中。


缓存提供者的要求:

我研究了几个 Java 缓存解决方案,但似乎没有一个符合我们的要求。

  1. 溢出到磁盘(我们不能将整个缓存保存在内存中,因为 RAM 非常有限)
  2. 关机时持久,启动时读取(不能是故障安全,但至少是尽力而为)
  3. LRU驱逐策略
  4. 磁盘和内存缓存的大小限制(不同)最大元素数
  5. 自定义缓存驱逐侦听器(通知第二个系统)

这就是常见框架不符合条件的原因:

ehcache在点(1)(2)上失败,因为不能同时拥有两者

JCS在第(5)点失败,因为无法对磁盘缓存逐出事件做出反应

Guava在第(1)点失败,因为没有溢出到磁盘选项

任何建议表示赞赏。

0 投票
0 回答
238 浏览

java - JCS,仅使用内存缓存从死节点中恢复

例如,我们有充当文件存储的服务器(jackrabbit 后端)。此数据在启动时被推送到内存中的 JCS 缓存中。这一切似乎都很好。

但是,我们的软件可以是多节点的,因此我们需要让 JCS 将数据复制到另一个节点。为了测试这一点,我使用了以下配置文件(为每个节点翻转了端口)。

这似乎最初是可行的,如果我用 100 个文件加载节点 A(并且每 10 秒保持加载 1 个文件),它就会被推送到节点 B,并不断更新。

但是,如果我拉下节点 B,然后重新启动节点 B,它将拉入新创建的文件。

我怎样才能让它在开始时进行一致性检查,所以当节点 A 重新找到节点 B(这似乎是)时,它会重新同步并将其自身重新排序出来。即再次将 100 + X 推到节点 B?

我只想在内存缓存中使用,因为磁盘缓存将是 JackRabbit 后端(我知道速度较慢,因此我们只需要内存缓存)

谢谢

0 投票
1 回答
466 浏览

java - ClassCastException:datastructures.instances.JClass 不能转换为 java.util.ArrayList

我知道关于 SO 有很多 CCE 问题。我已经详细或简要地阅读了其中的大部分内容,但我找不到任何适用于我的情况的内容。我的确切错误是:

Exception in thread "pool-1-thread-1" java.lang.ClassCastException: datastructures.instances.JClass cannot be cast to java.util.ArrayListif ((results = mCallsDownstreamCache.get(origin)) == null) {

正如您将在代码中看到的那样,我正在做的是ArrayList从缓存(HashMap)中请求一个,然后对此做出决定。这里的奇怪行为datastructures.instances.JClass是在生成错误的代码段中没有引用。

为了给你一些背景信息,我有一个数据库“模型”,它满足来自“控制器”的请求。这些结果存储在模型本地的缓存中,如果它们存在,模型将返回缓存,因此不必访问数据库。我的缓存元素是Commons 的 JCS的有效装饰器。

有问题的行被包裹在一个block commentinline comment

一些可能有用也可能没有帮助的额外细节:

  • Pair<V, K>数据结构只是一个不可变的 2 对元组类
  • CacheDecorator.get(V obj)null如果对象在缓存中不存在则返回
  • 我在选角等方面尝试了很多
  • JClass确实在代码的其他地方有引用,但在违规方法中没有引用
  • JClass是一个java类的表示,它是一个自定义结构
0 投票
2 回答
1181 浏览

java - 将 JCS 日志级别设置为 ERROR - log4j

我已经JCS在使用 log4j 进行日志记录的 J2ee 应用程序中实现了。

我的要求

将应用程序设置为rootLogger级别DEBUGjcs登录ERROR模式。

什么是尝试

log4j在属性中尝试了以下

但是没有什么影响日志记录。

每当缓存访问发生时,它都会记录一堆returning first node消息。

注意:我使用的是最新的 JCScommons-jcs-core-2.0-beta-1.jar

这是我完整的 log4j.properties