2014-09-19 3 views
0

Redis Store 및 GetRelatedEntities 호출을 사용하여 userId를 해당 사용자의 그룹과 연결합니다. 내가 처음으로 그룹을 얻을 수있는 고가의 데이터베이스 호출을 호출하기 전에 그룹이 지금까지 아직 캐시에 저장되어 있는지 확인하고자하는 서비스 호출에서 GetRelatedEntities <T> 빈 목록 (상위 레코드 없음) vs null (레코드가 아직 설정되지 않음)

(나는이 꽤 표준 가정)

GetRelatedEntities 호출은 해당 userId에 대해 이전에 StoreRelatedEntities가 호출되지 않은 경우 빈 List를 반환합니다. 그러나 빈 목록은 그룹이없는 사용자의 의미를 가질 수 있으므로 이전에 해당 그룹에 대한 그룹이 설정되지 않았 음을 확인하는 방법이 필요합니다.

두 상태를 구별 할 수있는 방법이 있습니까?

감사

답변

0

레디 스에서 자동으로 어떤 요소 컬렉션을 쿼리의 동작을하지 않을 때마다 컬렉션을 삭제하기 때문에 존재하지 않는 빈 레디 스에서 수집 한 구별 어쨌든이 아니라고 존재하지 않거나 비어 있습니다. 즉 빈 콜렉션을 반환합니다.

나는 StoreRelatedEntities를 호출 할 때마다 캐시가 사용자 ID, 등의 사용자 지정 설정 유지 권하고 싶습니다 :

redis.AddItemToSet("userGroupsCache", user.Id); 
redis.As<User>().StoreRelatedEntites(user.Id, groups); 

그런 다음 당신은이 캐시 된인지 세트를 조회 할 수 없거나을 예 :

var userCacheExists = redis.SetContainsItem("userGroupsCache", user.Id); 
+0

니스 - 고마워. – t316