MemoryCache의 일반적인 대체/구현이 있습니까?
기본 클래스 라이브러리에 없습니다. 개인적으로는 자신이 원하는 API를 제공하는 MemoryCache
에 대한 래퍼를 만들지 만 직접 작성해야합니다.
이 유형의 안전을 제공하고
유형의 안전이 래퍼 클래스에 비교적 쉽게 처리 할 수 있습니다 개봉기/아니오 복싱으로 성능 이점을 제공한다. boxing/unboxing은 값 유형 (클래스가 아님)을 저장하는 경우에만 문제가 될 수 있으며, 심지어는 실제 성능이 될만큼 자주 캐시를 밀고 당기는 것 같지 않으므로 최소값 일 가능성이 높습니다. 발행물. 형태의 안전성 및 유용성에 관해서는
, 나는 실제로 API 관점에서 조금 더 좋은 사용을 허용하는 일반적인
방법,에
MemoryCache
항목의 호출을 래핑하는 내 자신의 방법을 서면으로 작성했습니다. 매우 간단합니다. 일반적으로 다음과 같은 방법이 필요합니다.
public T GetItem<T>(string key) where T : class
{
return memoryCache[key] as T;
}
마찬가지로 값을 설정하는 방법을 만들 수 있습니다.
EDIT : 내가 관심이있는 또 다른 사항은 다른 키 유형입니다. 기본값은 System.String입니다.
이것은 MemoryCache
과 직접적으로 지원되지 않으므로 직접 키 생성을 위해 약간의 작업이 필요합니다. 하나의 옵션은 형식 안전 래퍼를 만드는 것입니다.이 래퍼는 Func<T, string>
을 제공하여 값을 기반으로 문자열 키를 생성합니다. 따라서 어떤 유형의 캐시 항목도 생성 할 수 있습니다 (T
). 그러나 비교의 일부로 원하는 문자열에 모든 데이터를 포함하려면주의해야합니다.
는하지만 당신은 할 수있을 것 한 가지 유형을 캐시하려면? 나는이 비용을 너무 많이 걱정하지 않을 것이고, 복싱 부분은 원시 값 유형에 대해 무시할 수있을 것입니다. –
@AdamHouldsworth : 예, 그럴 의도입니다.한 가지 유형 만 반환하는 슬라이딩 만료를 사용하여 데이터베이스 맵에 캐시를 래핑합니다. – caesay
해당 유형이 값 유형입니까? –