我有一个代表其客户进行外部 Web 服务调用的 Web 应用程序。我想在 Web 应用程序中缓存某些 Web 服务返回的数据,以便其他客户端可以重用这些数据并对这些缓存数据运行过滤器和查询。
Web 应用程序的当前架构使用 Apache Camel、Spring 和 Jetty。我正在寻找内存数据库选项的选项(优点/缺点)。
我有一个代表其客户进行外部 Web 服务调用的 Web 应用程序。我想在 Web 应用程序中缓存某些 Web 服务返回的数据,以便其他客户端可以重用这些数据并对这些缓存数据运行过滤器和查询。
Web 应用程序的当前架构使用 Apache Camel、Spring 和 Jetty。我正在寻找内存数据库选项的选项(优点/缺点)。
Hazelcast (Java API) - 您可以非常轻松地将内存中的数据网格(带有地图、多地图、集合、列表、队列、主题)分布在多个节点上,并将加载/存储接口实现与基于磁盘的数据库一起使用。你可以用 EHCache 做类似的事情。
Redis 是另一种选择(使用 Java 客户端访问它)。您可以简单地配置 conf 文件以将数据写入磁盘(或完全避免)并且不必编写自己的加载/存储类。
除此之外,您还可以使用许多选项。不确定您是否只查看开源选项,查看分布式选项。
希望能帮助到你。
Try Redisson - distributed and scalable familar Java data structures (Set, Map, ConcurrentMap, List, Queue, Lock, AtomicLong, CountDownLatch, Publish / Subscribe) on top of in-memory db Redis.
您是否考虑过使用MemCached?它不是数据库,而是可以从应用程序内部控制的缓存系统。
这里有一些关于内存数据库的更多想法。首先,几乎每个现代 RDBMS 内部都有一个内存缓存系统。您为数据库服务器提供的内存越多(并将其配置为缓存),它将存储在内存中以供以后使用的内存越多。如果您将一个具有足够内存来缓存所有表的系统放在一起,那么您将拥有一个“内存中”缓存,而不会产生另一个数据库的开销。
大多数总“内存”数据库用于性能非常关键的大容量/大数据系统。而且,因为它们适用于性能极强的系统,所以您需要为它们付费。或者更具体地说,为他们支付额外费用。例如,支持全内存的 SAP/Sybase DB 的成本可能比我们现有的产品高 40% 到 300%。
所以,在回答你的问题时,你真的需要一个吗?