在java中缓存大约800万条记录的有效方法

时间:2018-05-08 11:47:48

标签: java mysql jsp web

我在java中有一个Web应用程序,我必须缓存大约800万条记录,以最小化对数据库的连接请求(MySql)。处理这个问题的有效解决方案是什么?

2 个答案:

答案 0 :(得分:0)

所以,最好的简单做法是获取记录并将其保存在地图中(例如) 如果map不包含任何记录,请从DB获取。 它看起来像

private List<Records> cachedRecords;

public List<Record> getRecords()
{
   if (cachedRecords == null)
   cachedRecords = DB.getConnection().getRecords();
}

return cachedRecords;

更新:你也可以使用Hibernate,存在懒惰初始化等工具

答案 1 :(得分:0)

假设您没有内存问题来存储80lac记录。您可以创建两个地图。在第一张地图(让我们称之为RECORDS)中,您使用键值对机制存储所有记录。创建第二个地图(让我们称之为CACHED_RECORD)。实现MRU算法以在CACHED_RECORD中存储条目。以这种方式实现记录逻辑:

  • 从CACHED_MAP查询记录。
  • 如果找到记录,则从CACHED_MAP返回记录。
  • 如果记录不存在,请从RECORDS获取记录,并使用MRU逻辑更新CACHED_RECORD中的条目。

对于MRU逻辑,您可以参考 - https://en.wikipedia.org/wiki/Cache_replacement_policies

另一种方法是根据某些规则/政策对您的记录编制索引(例如:在某个地区以A开头的人名)。

尽管如此,它并不是存储80lac记录的好方法。您也应该对应用程序的性能进行基准测试。

希望有所帮助:)