我的团队决定通过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了(我的团队中也没有任何人),所以我们真的是从零开始。
慕村9548890