ASP.NET Кэширование, что было бы лучше - PullRequest
1 голос
/ 13 августа 2010

У меня есть таблица, в которой хранится счетчик песен и пьес.
Вот код:

//Increse plays counter
string ip = Request.UserHostAddress;
if (!string.IsNullOrEmpty(ip))
{
    if (Cache["plays:" + trackID + ":" + ip] == null)
    {
        tracks.IncreasePlaysCounter(trackID);
        Cache["plays:" + trackID + ":" + ip] = true;
    }
}

Интересно, что было бы лучше, хранить много элементов кэша (как этот) или хранить один?элемент вроде ArrayList, который будет содержать пользователей, которые уже слышали эту песню.Есть ли разница?

Ответы [ 2 ]

2 голосов
/ 13 августа 2010

Ни. Если ваша система каким-либо образом успешна, у нее будет слишком много отдельных записей, чтобы можно было справиться с этим, особенно если вы добавите код блокировки для обработки количества одновременных операций записи и чтения, с которыми придется справиться. с.

Сохраните эту информацию в базе данных. Или вообще не храните его, а получите его путем анализа журналов веб-сервера (если trackID является параметром запроса, эта информация уже будет в этих журналах без какой-либо работы с вашей стороны).

0 голосов
/ 14 августа 2010

Я собираюсь подойти к этому вопросу с позиции исключительно кеширования, а не контекста пьес и треков.

При принятии решения о кэшировании данных важно учитывать, каковы зависимости и как срок действия кэша.

Если срок действия кеша каждого пользователя может истекать индивидуально, то как у вас это нормально. Если выясняется, что срок действия одной записи истекает, следует сделать недействительным весь набор записей, затем поместить его в ArrayList и выгрузить весь объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...