2015-09-29 87 views
-1

我有数百万行要从数据库中读取,并且有多个用户每天来读取相同的数据。所以我想创建一个缓存。这样我不必再次访问数据库获取相同的数据。创建缓存应该使用文件系统还是内存?

我看过很多选项,但找不到找出使用哪种方法。

创建我自己的缓存我想保存查询结果的数据,并在文件或

使用一些第三方的内存缓存写什么呢?
Guava CacheBuilder,LRUMap缓存,whirlycache,cache4j。

+0

“最佳”完全取决于您的要求。 –

+0

这个你只能自己回答。它取决于多久会有一次缓存命中,数据大小,主内存大小。等等。首先统计多少次相同的查询被称为 – AlexWien

+0

数据可能是数百万条记录 – NittinS

回答

1

您不是第一个具有这种需求的人,这就是为什么有几十个缓存实现可用作开源项目,甚至是一组标准的缓存Java API(JCache)。如果您的需求超出了这些解决方案的范围,甚至有商业解决方案可以在RAM,闪存,数据库等中透明地处理数十TB的数据。如果这些数据都不够用,那么您一定要自己编写。

0

它完全依赖于多种因素。我认为答案将根据环境中,数据的大小等这里的要点

  1. 你要保持在RAM中缓存尽可能多的,因为它更快地访问不是在文件系统中。

  2. 您还可以使用OS内存映射文件来平衡访问和利用率。我建议不是创造任何行之有效的解决方案你自己

如果您在内存不足的运行,那么你可能要问的,因为他们是最有可能被要求是什么样的缓存上存取数据更重要的问题客户。

所以没有确定的答案,但你必须根据你的约束来决定。希望这有帮助

0

我认为你是在过度工程这个问题,写一个高性能,透明的缓存并不是微不足道的,除非你只需要一个简单的HashMap来保存一些值。您应该专注于编写代码来解决您的域问题,而不是编写太多的框架代码。

停止重新发明轮子,使用内存中缓存(例如infinispan或redis)或数据库(例如postgres)。你会有更少的痛苦和更好的表现。

相关问题