问题标签 [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.
jcs - JCS:如何访问在同一服务器上运行的两个不同应用程序中的缓存
jcs:我有两个应用程序在 Glassfish 中运行。如何将存储在一个应用程序中的缓存检索到另一个应用程序
java - Java缓存作为数据库?
java缓存库如何用作数据库?
我使用类似Ehcache
或JCS
代替数据库的东西?
是否Ehcache
只支持 Enterprise Ehcache 的持久化策略 = localRestartable,即付费版本?
这是否意味着免费版本不适合数据库替换?
更新
为什么持久缓存不能替代数据库?数据库引擎操作和使用 dist 存储的缓存操作之间的主要区别是什么?
这是 neo4j(图形数据库)和 Ehcache(缓存)之间的比较示例:http://vschart.com/compare/ehcache/vs/neo4j-community它们看起来具有可比性。
java - JCS 还是 java.util.Map,哪个在时间上效率更高?
我们正在编写一个测试框架,并且我们希望维护一个用于在套件级别存储对象的数据结构,对象从 int 到 slf4j Logger 不等。我不清楚使用哪种数据结构,哪个更有效。
java - 如何对返回的数据库事件使用缓存机制
我的数据库(Oracle)在执行 DML 操作时推送 rowID,并且我的 java 程序有一个侦听器来处理事件并获取 rowID。
例如:以下是 DML 操作从数据库返回的值
ROW:操作=更新,ROWID=AAASjgAABAAAVapAAA
现在我必须将此 rowID 存储在缓存中?我如何在java中做到这一点?任何线索都会有所帮助。我正在考虑 JCS 或 Ehcache。哪一个更可取?
通过侦听器处理作为 DB 事件的一部分返回的 RowID:
java - JCS 1.3 关机后从磁盘刷新缓存
我正在尝试使用 JCS 1.3 创建一个永久磁盘缓存。我希望缓存能够关闭,然后在我下次使用它时从磁盘重新加载。我有很多数据要从需要很长时间才能运行的数据库中填充,如果缓存只是从磁盘重新加载,它会快得多。我已经尝试通读 JCS 文档并使用他们的配置示例开始工作,但到目前为止还没有成功。这是我正在使用的配置
这是我正在运行的一个非常简单的测试,以确保我的配置正确。
JCS 缓存 = JCS.getInstance("myRegion1"); cache.put("key", "我的价值");
这是我在输出中得到的:
有人能指出我正确的方向吗?不确定这是否是我的配置中的问题,或者需要在代码中执行某些操作以告诉它从磁盘刷新。
java - JCS CompositeCacheAttributes 不能转换为 ICompositeCacheAttributes
我正在以同样的方式使用我以前使用过的 JCS,没有任何问题。
当服务器启动时,我手动设置缓存属性
以这种方式设置时会引发错误
我在其他项目上使用了完全相同的方法,没有问题。为什么我现在得到这个异常?
编辑
我正在从
在此之前,我也尝试过获得同样问题的 2.0-beta 版本
编辑 2
如果其他人面临同样的问题并希望跟随,我已经在 Jira 开了一张票。
java - 在 Java 中寻找持久重启的 LRU 磁盘缓存解决方案 - ehcache、guava、JCS 不合格
我们有一个处理图像数据的应用程序,在单台机器上运行。处理非常昂贵(10 到 30 秒),因此我们将生成的文件缓存在磁盘上。这些文件也很大,因此我们必须在缓存达到可配置边界时对其进行修剪。缓存的图像文件本身是由不同的非 Java 进程创建的。并且有些用户操作可能会导致某些缓存条目变得无效。
当前实施:
目前我们正在为此使用自定义缓存管理器,并将一些元数据单独存储在文件系统结构中。
缓存提供者的要求:
我研究了几个 Java 缓存解决方案,但似乎没有一个符合我们的要求。
- 溢出到磁盘(我们不能将整个缓存保存在内存中,因为 RAM 非常有限)
- 关机时持久,启动时读取(不能是故障安全,但至少是尽力而为)
- LRU驱逐策略
- 磁盘和内存缓存的大小限制(不同)最大元素数
- 自定义缓存驱逐侦听器(通知第二个系统)
这就是常见框架不符合条件的原因:
ehcache在点(1)和(2)上失败,因为不能同时拥有两者
JCS在第(5)点失败,因为无法对磁盘缓存逐出事件做出反应
Guava在第(1)点失败,因为没有溢出到磁盘选项
任何建议表示赞赏。
java - JCS,仅使用内存缓存从死节点中恢复
例如,我们有充当文件存储的服务器(jackrabbit 后端)。此数据在启动时被推送到内存中的 JCS 缓存中。这一切似乎都很好。
但是,我们的软件可以是多节点的,因此我们需要让 JCS 将数据复制到另一个节点。为了测试这一点,我使用了以下配置文件(为每个节点翻转了端口)。
这似乎最初是可行的,如果我用 100 个文件加载节点 A(并且每 10 秒保持加载 1 个文件),它就会被推送到节点 B,并不断更新。
但是,如果我拉下节点 B,然后重新启动节点 B,它将拉入新创建的文件。
我怎样才能让它在开始时进行一致性检查,所以当节点 A 重新找到节点 B(这似乎是)时,它会重新同步并将其自身重新排序出来。即再次将 100 + X 推到节点 B?
我只想在内存缓存中使用,因为磁盘缓存将是 JackRabbit 后端(我知道速度较慢,因此我们只需要内存缓存)
谢谢
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.ArrayList
在if ((results = mCallsDownstreamCache.get(origin)) == null) {
正如您将在代码中看到的那样,我正在做的是ArrayList
从缓存(HashMap
)中请求一个,然后对此做出决定。这里的奇怪行为datastructures.instances.JClass
是在生成错误的代码段中没有引用。
为了给你一些背景信息,我有一个数据库“模型”,它满足来自“控制器”的请求。这些结果存储在模型本地的缓存中,如果它们存在,模型将返回缓存,因此不必访问数据库。我的缓存元素是Commons 的 JCS的有效装饰器。
有问题的行被包裹在一个block comment
和inline comment
一些可能有用也可能没有帮助的额外细节:
Pair<V, K>
数据结构只是一个不可变的 2 对元组类CacheDecorator.get(V obj)
null
如果对象在缓存中不存在则返回- 我在选角等方面尝试了很多
JClass
确实在代码的其他地方有引用,但在违规方法中没有引用JClass
是一个java类的表示,它是一个自定义结构
java - 将 JCS 日志级别设置为 ERROR - log4j
我已经JCS
在使用 log4j 进行日志记录的 J2ee 应用程序中实现了。
我的要求
将应用程序设置为rootLogger
级别DEBUG
并jcs
登录ERROR
模式。
什么是尝试
log4j
在属性中尝试了以下
但是没有什么影响日志记录。
每当缓存访问发生时,它都会记录一堆returning first node
消息。
注意:我使用的是最新的 JCScommons-jcs-core-2.0-beta-1.jar
这是我完整的 log4j.properties