memcache как кеш второго уровня Nhibernate

У меня вопрос о кешировании второго уровня с помощью NHibernate и memcache. Предположим следующую конфигурацию:

Веб-сайт A использует DB_A. Данные из таблицы X кэшируются. Веб-сайт B использует DB_B. Данные из таблицы X кэшируются.

Оба веб-приложения используют один сервер memcache.

Теперь таблица X в DB_A и DB_B, имея одинаковую схему, имеет разные данные, поэтому строка с PK = 1 в DB_A НЕ будет теми же данными, что и строка с PK = 1 в DB_B.

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


person Andy    schedule 13.08.2011    source источник
comment
Вы можете определить префикс для ключей кэша памяти, чтобы вы могли просто настроить оба сайта на использование другого префикса и знать, что все ключи будут A_UserTable или B_UserTable ...   -  person Phill    schedule 15.08.2011


Ответы (1)


Я не уверен, что у вас будут перекрывающиеся или перезаписанные данные. Вам нужно будет проверить, какие ключи кеша используются. Однако есть интересные статьи, которые могут оказаться полезными:

http://ayende.com/blog/3976/nhibernate-2nd-level-cache

http://ayende.com/blog/3112/nhibernate-and-the-second-level-cache-tips

http://ayende.com/blog/1708/nhibernate-caching-the-secong-level-cache-space-is-shared

Последний, вероятно, будет для вас наиболее полезен. Автор сделал нечто похожее на то, что вы пытаетесь сделать, за исключением того, что вы упрощаете себе жизнь, (каким-то образом) не имея конфликтов первичных ключей.

person Thilak Nathen    schedule 15.08.2011
comment
Я думаю, вы неправильно поняли. Я думаю, что у нас действительно могут быть конфликты первичных ключей. - person Andy; 15.08.2011