2014-11-22 59 views
-1

Java缓存库如何用作数据库?作为数据库的Java缓存?

我使用类似EhcacheJCS而不是数据库?

难道Ehcache仅支持Enterprise Ehcache(即付费版本)的持久性策略= localRestartable吗?

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

UPDATE

为什么不是持久的缓存数据库替换?数据库引擎操作和使用远程存储的高速缓存操作之间的主要区别是什么?

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

+0

缓存不是数据库。即使持久性缓存不是数据库。如果您坚持将其视为数据库,您将失去应用程序数据。改用NoSQL键值存储。 – 2014-11-22 20:03:02

+0

为什么不持久缓存数据库替换? – 2014-11-22 21:47:28

+0

我已经回答了你和你的意见,你仍然只是重复“但我确定我是对的”。下调,因为如果你确定你不应该问问题。试试你的*明亮的想法,看看它是如何工作的,然后回到这里来回答自己发生了什么。 – SJuan76 2014-11-23 12:28:35

回答

1

缓存是一种应用程序组件,它可以增加内存使用量,以降低数据访问的延迟。它通常有一个驱逐的概念,加上假设它拥有可以从别处查询或重建的数据。

这两个概念组合允许缓存实现者在他们认为合适的任何时候从缓存中删除条目,用于限制缓存资源利用率,以支持具有更频繁访问模式的条目或仅仅不具有缓存的条目延迟时间增加的原因。

这是缓存不应该用作数据存储的主要原因。

现在一些缓存实现可能会提供防止驱逐的功能,但在这种情况下,您最终会付出驱逐逻辑/复杂性的代价,而这些价格不会出现在数据存储中。

关于Ehcache持久性,传统模式overflowToDisk=truediskPersistent=true提供有限的“存活JVM重启”持久性。然而,它对正常关机非常敏感,并且在启动时检测到任何损坏后,缓存将丢弃所有内容并重新启动为空。请参阅上文为什么这是缓存上下文中的有效选项。