为了账号安全,请及时绑定邮箱和手机立即绑定

ServiceStack.Net Redis:存储相关对象与相关对象ID

ServiceStack.Net Redis:存储相关对象与相关对象ID

收到一只叮咚 2019-10-26 12:55:24
我的团队决定通过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>在上面的示例中)会变大,那么您将获得每个集合的完整集合时间,你得到对象。这可能是带宽的问题-在我们的情况下,每次登录都会返回用户以及该用户的所有供稿项,这并不理想。关键是无论采用哪种对象关系方法,正确构造模型结构都是很重要的…… 

查看完整回答
反对 回复 2019-10-26
  • 2 回答
  • 0 关注
  • 718 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信