私のチームは、ServiceStack.net Redis Client を介して Redis と連携することを決定しました。これは、私たちが取り組んでいる新しい大量の Web サイトの基盤となるリポジトリです。この質問のドキュメントを探す場所がよくわかりません(一般的なRedisドキュメントまたは特定のServiceStack.Netドキュメント、またはその両方のいずれか)-RedisをServiceStack.Net経由で実装する方法に関するドキュメントの決定的なソースが実際にあります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週間前まで、ServiceStackはもちろんのこと、Redisについても聞いたことがありませんでした(私のチームにも誰もいませんでした)。