我的团队决定通过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 关注
- 745 浏览
添加回答
举报
0/150
提交
取消