.NET Core 2.0 이전 팁 의 Memory Cache 문제 복구 해결 방법
5091 단어 .netcore2.0memorycache
전통 적 인.NET Framework 프로젝트 에 있어 서
System.Runtime.Caching
네 임 스페이스 는 자주 사용 되 는 도구 이 고 그 중에서 Memory Cache 류 는 메모리 캐 시 를 실현 하 는 데 자주 사용 된다 는 것 을 잘 알 고 있 을 것 이다..NET Core 2.0 은 아직 System.Runtime.Catching dll 을 지원 하지 않 는 다 는 것 은 Memory Cache 관련 코드 가 더 이상 작 동 하지 않 는 다 는 것 을 의미한다.
그러나 좋 은 소식 은.NET Core 2.0 의 새로운 API 를 사용 하여 메모리 캐 시 기능 을 실현 하고 코드 를 간단하게 수정 하여 호 환 되 지 않 는 문 제 를 해결 할 수 있다 는 것 이다.다음은 더 이상 할 말 이 없 으 니 상세 한 소 개 를 해 봅 시다.
해결 방안
1.오래된 코드 를 항목 에 가 져 옵 니 다.다음 과 같 습 니 다.
using System;
using System.Runtime.Caching;
namespace TestWebApp.Service
{
public class MemoryCacheService
{
static ObjectCache cache = MemoryCache.Default;
/// <summary>
///
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
private object GetCacheValue(string key)
{
if (key != null && cache.Contains(key))
{
return cache[key];
}
return default(object);
}
/// <summary>
///
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
public static void SetChacheValue(string key, object value)
{
if (key != null)
{
CacheItemPolicy policy = new CacheItemPolicy
{
SlidingExpiration = TimeSpan.FromHours(1)
};
cache.Set(key, value, policy);
}
}
}
}
가 져 오 면 VS 가 네 임 스페이스 를 찾 을 수 없 음 을 알려 줍 니 다System.Runtime.Caching
.기 존 코드 는 직접 컴 파일 할 수 없습니다.2.
Microsoft.Extensions.Caching.Memory
네 임 스페이스 에 대한 인용 을 추가 합 니 다.이 는.NET Core 가 기본적으로 구현 하 는 Memory Cache 류 와 새로운 메모리 캐 시 API 를 제공 합 니 다.
using Microsoft.Extensions.Caching.Memory;
3.코드 를 바 꾸 고 새로운 API 를 사용 하여 메모리 캐 시 기능 을 실현 합 니 다.캐 시 대상 방식 초기 화
static ObjectCache cache = MemoryCache.Default;
캐 시 대상 방식 초기 화 후:
static MemoryCache cache = new MemoryCache(new MemoryCacheOptions());
메모리 캐 시 값 읽 기 방식 변화:
private object GetCacheValue(string key)
{
if (key != null && cache.Contains(key))
{
return cache[key];
}
return default(object);
}
고 쳐 쓴 후:
private object GetCacheValue(string key)
{
object val = null;
if (key != null && cache.TryGetValue(key, out val))
{
return val;
}
else
{
return default(object);
}
}
메모리 캐 시 내용 변경 설정:
public static void SetChacheValue(string key, object value)
{
if (key != null)
{
CacheItemPolicy policy = new CacheItemPolicy
{
SlidingExpiration = TimeSpan.FromHours(1)
};
cache.Set(key, value, policy);
}
}
수정 후:
public static void SetChacheValue(string key, object value)
{
if (key != null)
{
cache.Set(key, value, new MemoryCacheEntryOptions
{
SlidingExpiration = TimeSpan.FromHours(1)
});
}
}
결론.Microsoft.Extensions.Caching.Memory
의 새 API 를 사용 하여 오래된 코드 를 바 꾼 후에 기 존의 각종 메모리 캐 시 시간 초과 정책 은 모두 새로운 API 에 대응 하 는 것 을 발견 할 수 있 습 니 다.AbsoluteExpiration,Sliding Expiration 등 을 포함 합 니 다.그래서 우 리 는.NET Core 의 새로운 API 를 쉽게 사용 할 수 있 습 니 다.간단하게 변경 하면 기 존의 대부분의 오래된 코드 를 다시 사용 하여 이 를 옮 겨 서 계속 역할 을 할 수 있 습 니 다.
이전 후의 전체 코드 는 다음 과 같다.
using Microsoft.Extensions.Caching.Memory;
using System;
namespace TestMemoryCacheWebApp.Services
{
public class MemoryCacheService
{
static MemoryCache cache = new MemoryCache(new MemoryCacheOptions());
/// <summary>
///
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
private object GetCacheValue(string key)
{
object val = null;
if (key != null && cache.TryGetValue(key, out val))
{
return val;
}
else
{
return default(object);
}
}
/// <summary>
///
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
public static void SetChacheValue(string key, object value)
{
if (key != null)
{
cache.Set(key, value, new MemoryCacheEntryOptions
{
SlidingExpiration = TimeSpan.FromHours(1)
});
}
}
}
}
총결산이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
AS를 통한 Module 개발1. ModuleLoader 사용 2. IModuleInfo 사용 ASModuleOne 모듈...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.