Моя команда решила работать с Redis через ServiceStack.net Redis Client в качестве основного репозитория для нового массового веб-сайта, над которым мы работаем. Я не совсем уверен, где искать документацию по этому вопросу (либо для общих документов Redis, либо для конкретных документов ServiceStack.Net или обоих) - есть ли на самом деле исчерпывающий источник документации о том, как реализовать Redis через ServiceStack.Net, который включает все, что вам нужно знать как о концепциях Redis, так и о концепциях ServiceStack.Net, или нам нужно интегрировать документацию по обоим аспектам отдельно, чтобы получить полную картину ?.
Я просто пытаюсь понять, как именно хранить связанные объекты в графе объектов нашей модели. Вот простой сценарий, с которым я хочу работать:
В системе два объекта: Пользователь
и Feed
. В терминах РСУБД эти два объекта имеют отношение «один ко многим», то есть Пользователь
имеет коллекцию из объектов Feed
, и канал может принадлежать только одному Пользователю.
. Доступ к каналам всегда будет осуществляться из 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 );
}
}
Какой из вышеперечисленных подходов будет работать лучше всего? Я видел оба подхода, использованные в различных примерах, но у меня сложилось впечатление, что некоторые из примеров, которые я видел, могут быть не лучшими.
Несколько простых связанных вопросов:
IList
вместо List
? Извините, если эти вопросы немного базовые - до 2 недель назад я я никогда даже не слышал о Redis - не говоря уже о ServiceStack - (и никого из моей команды), так что мы действительно начинаем здесь с нуля ...