2014-09-19 49 views
0

我正在使用Redis Store和GetRelatedEntities調用將userId與該用戶的組相關聯。GetRelatedEntities <T>空列表(沒有父記錄)vs null(記錄尚未設置)

在服務調用我想看看各組曾經被存儲到緩存但我調用了昂貴的數據庫調用來獲取首次組之前(我認爲這是非常標準的)

如果此用戶標識之前尚未調用StoreRelatedEntities,則GetRelatedEntities調用將返回一個空列表。但是,空列表可以具有用戶沒有任何組的含義,所以我需要一種方法來確定組之前沒有爲該用戶設置組。

有什麼辦法可以區分這兩種狀態嗎?

感謝

回答

0

沒有反正在Redis的一個空集和一個不存在的,因爲Redis的自動刪除集合時,它沒有任何元素和查詢集合的行爲之間進行區分不存在或爲空是相同的,即它返回一個空集合。

我建議保持有緩存每當調用StoreRelatedEntities的用戶id,例如自定義設置:

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

然後你就可以查詢該組無論是被緩存或沒有,例如:

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

不錯 - 謝謝。 – t316 2014-09-19 13:20:13