메모리 캐시에서 기본 ASP.NET을 사용하므로 내부적으로 키 - 값 쌍을 사용하기 위해 사전 <을 사용합니다. 그러나 Azure 캐시 나 외부 캐시와 같은 외부 캐싱 솔루션은 데이터를 직렬화하여 메모리 솔루션과는 다른 상황을 만듭니다. 아래 예제에서, 나는 List 객체를 key로 잡고 그것을 업데이트한다.캐싱이 복잡한 개체 변경을 감지하고 캐시 데이터를 효율적으로 업데이트하는 방법
var users = new List<User>();
HttpContext.Cache.Insert("key", users);
users.Add(new User());//cached list will update itself with this insertion ?
var cachedUsers = (List<User>) HttpContext.Cache["key"];// now i got users list object reference or copied users list without inserted user ?
나는 선에 댓글로하는 경우는 캐시가 사용자 목록 참조를 보유하지만 난 푸른 캐시 솔루션 같은 외부 캐시 솔루션을 사용하는 경우 응답이 변화하고 있음을 명확하게 알 수 있도록 ASP.NET의 메모리 캐시 솔루션에서이 시나리오를 사용 기본 . 개체 참조를 캐싱하는 대신 개체를 serialize하는 외부 솔루션을 사용하는 경우 다음 질문에 대한 대답은 무엇입니까?
캐시 된 목록 자체가 해당 삽입으로 업데이트됩니까?
캐시에서 데이터를 다시 가져 오는 경우 사용자 목록 개체 참조 또는 삽입 된 사용자가없는 복사 된 사용자 목록일까요?
시나리오를 추가하거나 일부 scenarious에서 목록 개체를 삭제하면 캐시의 전체 목록을 업데이트해야합니까? 따라서 하나의 추가 또는 삭제 작업에 대해 매우 큰 목록을 업데이트하면 성능에 큰 영향을 미치지 않을 것입니다. – Freshblood
자주 업데이트해야하는 대규모 목록이있는 경우 캐시되기에 적합하지 않을 수 있습니다. –
이 시나리오를 효율적으로 처리 할 생각이 있습니까? – Freshblood