我的團隊決定通過ServiceStack.net Redis Client與Redis一起使用,作為我們正在處理的新的高流量網站的基礎存儲庫。我真的不確定在哪里可以找到有關此問題的文檔(對于一般的Redis文檔還是特定的ServiceStack.Net文檔,或兩者兼而有之)-實際上是否存在有關如何通過ServiceStack.Net實現Redis的文檔的權威來源您需要了解有關Redis概念和ServiceStack.Net概念的全部知識,還是我們需要分別集成這兩個方面的文檔才能獲得完整的概覽?我只是在努力如何在模型的對象圖中準確存儲相關對象。這是我要使用的簡單方案:系統中有兩個對象:User和Feed。用RDBMS術語來說,這兩個對象具有一對多的關系,即,一個User具有Feed對象的集合,而提要只能屬于一個User。Feed始終會通過Redis的用戶進行訪問,但有時我們希望通過feed實例來訪問該用戶。因此,我的問題是我們應該將相關對象存儲為屬性還是應該存儲Id相關對象的值?為了顯示:方法A:public class User{ public User() { Feeds = new List<Feed>(); } public int Id { get; set; } public List<Feed> Feeds { get; set; } // Other properties}public class Feed{ public long Id { get; set; } public User User { get; set; }}方法B:public class User{ public User() { FeedIds = new List<long>(); } public long Id { get; set; } public List<long> FeedIds { get; set; } public List<Feed> GetFeeds() { return repository.GetFeeds( FeedIds ); }}public class Feed{ public long Id { get; set; } public long UserId { get; set; } public User GetUser() { return repository.GetUser( UserId ); }}以上哪種方法最有效?我已經在各種示例中看到了這兩種方法,但是我得到的印象是,我看到的某些示例可能不是最佳實踐。一些簡單的相關問題:如果我對對象進行更改,它將自動反映在Redis中還是需要保存?我假設是后者,但需要絕對清楚。如果我(可以)使用方法A,則對用戶對象X的更新會在引用的所有對象圖中反映到整個對象圖中,還是有必要在整個圖中保存更改?通過對象的接口存儲對象是否存在問題(即使用IList<Feed>而不是List<Feed>?抱歉,如果這些問題有點基本-直到2周前,我什至沒有聽說過Redis-更不用說ServiceStack了(我的團隊中也沒有任何人),所以我們真的是從零開始。
2 回答

慕村9548890
TA貢獻1884條經驗 獲得超4個贊
現在,我想在另一個方面進行擴展,因為我已經與Redis合作了一段時間了:如果您的對象的集合(List<Feed>
在上面的示例中)會變大,那么您將獲得每個集合的完整集合時間,你得到對象。這可能是帶寬的問題-在我們的情況下,每次登錄都會返回用戶以及該用戶的所有供稿項,這并不理想。關鍵是無論采用哪種對象關系方法,正確構造模型結構都是很重要的……
- 2 回答
- 0 關注
- 777 瀏覽
添加回答
舉報
0/150
提交
取消