gpt4 book ai didi

java - 使用Java缓存查询结果: Any better Approaches?

转载 作者:太空宇宙 更新时间:2023-11-04 07:54:11 26 4
gpt4 key购买 nike

我有一个类 ClassA,它调用另一个类(DAO)来获取查询结果。在特定的业务场景下,

ClassA 使用查询参数调用 DAO 大约 20,000 次。其中,ClassA 向 DAO 发送了大约 10,000 次相同的查询参数集。显然结果集将是相同的并且可以被缓存。

以下是我实现的代码。

Class A

{

.
.
.
.

Map<String, CachData> cachDataMap= new HashMap<String, CachData>();

priavate void getQueryResults(String queryParam)
{

try {


Set<String> cacheSet = cachDataMap.keySet();
CachData cachData = null;
if(!cacheSet.contains(queryParam))
{
dao.getResuslts((queryParam)));
cachData = new CachData();
cachData.setResult0(__getStringResult(0));
cachData.setResult1(__getStringResult(1));
cachData.setResult2(__getStringResult(2));
cachData.setResult3(__getStringResult(3));
cachData.setResult4(__getStringResult(4));
cachData.setResult5(__getStringResult(5));
cachDataMap.put(queryParam, cachData);
}else
{
cachData = cachDataMap.get(queryParam);
}



} catch(Exception e) {
//handle here
}


}

除了使用任何框架之外,我们还有其他更好的解决方案吗?更好的数据结构或更好的方法..为了良好的性能?

最佳答案

您可以使用ehcache

无论您做什么,都不要使用 Map 作为缓存接口(interface)。一个好的缓存接口(interface)将允许实现清理缓存。 map 合约不允许这样做。

根据实现的不同,清理可以基于缓存中的时间,或者基于使用统计数据,或者内存可用性,...

您在这里使用的 map 方法似乎在较长的使用时间内容易出现内存不足的情况。

关于java - 使用Java缓存查询结果: Any better Approaches?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13873991/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com