servicestack.net redis:関連するオブジェクトと関連するオブジェクトIDの保存
-
29-10-2019 - |
質問
私のチームは、私たちが取り組んでいる新しい大量のウェブサイトの基礎となるリポジトリとして、Servicestack.Net Redisクライアントを介してRedisと協力することを決定しました。この質問のドキュメントを探す場所は本当にわかりません(一般的なRedisドキュメントまたは特定のServiceStack.NETドキュメントまたはその両方について - 実際には、Servicestack.netを介してRedisを実装する方法に関するドキュメントの決定的なソースがありますかRedisの概念とServiceStack.NETの両方の概念について知る必要があるのは、両方の側面からドキュメントを個別に統合して全体像を取得する必要がありますか?
モデルのオブジェクトグラフに関連するオブジェクトを正確に保存する方法に取り組んでいます。これが私が仕事をしたい簡単なシナリオです:
システムには2つのオブジェクトがあります。 User
と Feed
. 。 RDBMSという用語では、これらの2つのオブジェクトには1対多の関係があります。つまり、 User
のコレクションがあります Feed
オブジェクトとフィードは1つだけに属することができます User
. 。フィードは常にユーザーを介してRedisからアクセスされますが、フィードインスタンスを介してユーザーにアクセスすることがあります。
ですから、私が持っている質問は、関連するオブジェクトをプロパティとして保存する必要があるかどうか、または保存する必要があるかどうかです 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について聞いたことさえありませんでした - (私のチームには誰もいませんでした)。
正しい解決策はありません