AOP를 사용하여 내 웹 사이트의 BLL 계층의 모든 메소드에 캐시 기능을 적용하고 싶습니다. 그냥 아래와 같이 :캐시 관리 우수 사례
이[Cacheable(new string[] { "id" }, GroupName = "UserInfoByID", LiveTime = "00:05:00")]
public UserInfo GetUserInfoByID(int id)
{
return UserDAO.GetUserInfo(id);
}
Cacheable
속성의 첫 번째 인수는 방법의 인수는 캐시 키를 생성하는 데 사용 될 파악. 두 번째 인수 GroupName
은 캐시 키의 접두사를 계산합니다. 위의 예와 같이 "UserInfoByID (123)"키가 생성됩니다 (쿼리 ID가 123이라고 가정).
[PurgeCache(new string[] { "userInfo.ID" }, GroupName = "UserInfoByID")]
public void UpdateUserInfo(UserInfo userInfo)
{
UserDAO.UpdateUserInfo(userInfo);
}
그것은 캐시 제거하기 위해 동일한 키를 생성하는 userInfo.ID과 같은 GroupName- UserInfoByID
를 사용합니다 : UserInfoByID(123)
을 나는 다른 속성을 만들 수 있습니다. 사용하기 쉽고 우아합니다. 그러나 매우 어려운 문제가 있습니다. 다른 방법이 있습니다 :
public void ManageUser(int[] userID, int status)
{
UserDAO.ManageUser(userID, status);
}
이 방법은 사용자 상태를 변경하는 데 사용됩니다. 실행 후 캐시를 새로 고치는 방법은 무엇입니까? int[] userID
키를 하나씩 생성하고 모두 제거해야합니까? 매우 간단한 경우 일지라도 고성능 캐시를 고려하면 너무 복잡합니다.
[Cacheable(new string[] { "regionID" }, GroupName = "UserList", LiveTime = "00:05:00")]
public List<UserInfo> GetUserList(int regionID)
{
List<UserInfo> result = UserDAO.GetUserList(regionID);
return result;
}
내가 disactiviated에 대한 사용자의 상태를 변경하는 경우, 어떻게 내가 위의 방법의 캐시를 새로 고칠 수 있습니다 : 나는 목록 쿼리 mehod을 치죠?