Комментарии 21
НЛО прилетело и опубликовало эту надпись здесь
Хорошая статья. Вы явно понимаете о чем говорите. :-) Пишите еще.
+1
про теги отличная идея, спасибо будем знать
+1
Спасибо за труды.
+1
Простите за непрошибаемость, но можно поподробнее зачем нужны тэги? чет не разобрался :-[
0
я тут habrahabr.ru/blogs/net/61655/ дораскрыл тему, как можно сделать инвалидацию автоматической для Linq2SQL объектов
+1
У меня вопрос по коду:
Объект myLock будет создан ведь для каждого потока отдельно, т.к. это локальный объект, поэтому race condition по-прежнему будет иметь место, пока myLock не станет глобальным объектом для всех потоков.
Или я чего-то недопонимаю?
- object myLock = new object();
- var products = Cache.Get<List<Product>>("Products", myLock,
- () => db.Products.ToList(), DateTime.Now.AddMinutes(10));
Объект myLock будет создан ведь для каждого потока отдельно, т.к. это локальный объект, поэтому race condition по-прежнему будет иметь место, пока myLock не станет глобальным объектом для всех потоков.
Или я чего-то недопонимаю?
+4
Допанимаешь :)
0
private object _lock = new object();
лок обьект должен быть статическим. тогда в нем будет польза. я думаю это маленькая описка :)
лок обьект должен быть статическим. тогда в нем будет польза. я думаю это маленькая описка :)
+3
В двух местах описка получается. :) Сначала не был объявлен статическим объектом, а потом и вовсе был объявлен локальным объектом. Все это наводит на нехорошие мысли. :)
+1
Спасибо, я поправил код в статье. Вероятно, недосмотрел, когда переписывал статью с тем, чтобы не блокировался весь кэш при записи по одному ключу.
Меня это тоже навело на нехорошие мысли, пойду завтра проверю то, что я в рабочий код залил. Правда, там работа с кэшем ведется в singletone-репозитарии, поэтому статический лок делать не нужно.
А вот в
Меня это тоже навело на нехорошие мысли, пойду завтра проверю то, что я в рабочий код залил. Правда, там работа с кэшем ведется в singletone-репозитарии, поэтому статический лок делать не нужно.
А вот в
object myLock = new object();
точно ошибка.0
Если бы ещё можно было сделать кэш, который будет разделяться между машинами кластера… эх…
0
есть реализация мемкешед для.нет
0
0
Бесплатный вариант nCache не имеет ни тегирования, ни вообще каких-либо dependencies, кроме file-based. А платный выходит от $1000 на каждый CPU, т.е. — от $2000 на минимальную конфигурацию из 2х серверов…
Velocity пока на такой стадии, что пользоваться им сложно. Плюс обычное желание Майкрософта «объять необъятное» вместо того, чтобы сделать простую версию 1.0, решающую проблемы «здесь и сейчас».
Так что пока — только Memcached + самописная работа с тегами :(
Velocity пока на такой стадии, что пользоваться им сложно. Плюс обычное желание Майкрософта «объять необъятное» вместо того, чтобы сделать простую версию 1.0, решающую проблемы «здесь и сейчас».
Так что пока — только Memcached + самописная работа с тегами :(
+1
а если в пуле приложения разрешено больше чем 1 процесс, то и на одной машине не будет работать должным образом.
0
У меня были проблемы со встроенным кешем — почему-то записи на нагруженном сервере вытеснялись сразу же после добавления (дело было при переходе с 1.1 на 2.0, перерыл много чего в гугле, нашёл лишь, что у кого-то такая же ситуация). Пришлось свой автоочищающий кеш написать.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Расширяем и улучшаем Cache в ASP.NET