我在java中有一个Web应用程序,我必须缓存大约800万条记录,以最小化对数据库的连接请求(MySql)。处理这个问题的有效解决方案是什么?
答案 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中存储条目。以这种方式实现记录逻辑:
对于MRU逻辑,您可以参考 - https://en.wikipedia.org/wiki/Cache_replacement_policies
另一种方法是根据某些规则/政策对您的记录编制索引(例如:在某个地区以A开头的人名)。
尽管如此,它并不是存储80lac记录的好方法。您也应该对应用程序的性能进行基准测试。
希望有所帮助:)