구아바 캐시가 처음이며 몇 가지 조언을 구합니다.구아바 캐시의 키 선택
일부 계산을 담당하는 클래스 인 "함수"를 캐시하고 싶습니다. 각 클래스에는 3 개의 double 속성이 있습니다. 시작, 최대, 증분
캐시에 저장할 키를 만드는 가장 좋은 방법은 무엇입니까? 어쩌면 복잡한 대상일까요?
나는 Hasher를 사용하는 것에 대해 생각하고 있었지만 복잡한 객체의 경우 동일한 해시가 동일한 객체를 의미하지는 않습니다. 따라서 key-> value는 고유하지 않습니다.
또한 캐시는 키를 어떻게 찾습니까? 동일한 키를 전달하는 키에 2 개의 객체를 사용하면 Cache는이 객체를 고유 키로 간주합니다. key1 == key2를 기반으로 작동합니까?
public static void testGuavaCache() {
Cache<Object, String> CACHE = CacheBuilder.newBuilder().weakKeys().weakValues().build();
for (int i = 0; i < 2; i++) {
Joiner joiner = Joiner.on('|');
String key1 = joiner.join(i, i, i, i, i, i, i);
for (int j = 0; j < 2; j++) {
String key = joiner.join(i, i, i, i, i, i, i);
System.out.println(key1.equals(key));
System.out.println(key1 == key);
try {
String m = CACHE.get(key, new Callable<String>() {
@Override
public String call() throws Exception {
return "test";
}
});
System.out.println("Size = " + CACHE.size());
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}
}
출력된다 :
true
false
Size = 1
true
false
Size = 2
true
false
Size = 3
true
false
Size = 4
weakKeys 분리()는 문제를 해결한다. 예상 되나요?
개체를 만들 때 비용이 많이 듭니까? 그렇지 않다면 캐싱을 잊어 버리고 필요에 따라 다시 작성하십시오. – maaartinus