2011-08-13 4 views
1

J'ai une question sur la mise en cache de second niveau avec NHibernate et memcache. Supposons la configuration suivante:memcache comme cache de second niveau de Nhibernate

Le site Web A utilise DB_A. Les données de la table X sont mises en cache. Le site Web B utilise DB_B. Les données de la table X sont mises en cache.

Les deux applications Web partagent un seul serveur memcache. Maintenant, la table X dans DB_A et DB_B ayant le même schéma ont des données différentes, donc row avec PK = 1 dans DB_A ne sera pas les mêmes données que row avec PK = 1 dans DB_B. Ma question est, chaque application clobber les données de l'autre, ou est le cache de deuxième niveau assez intelligent pour créer des clés de cache qui ne surclassent pas les bases de données.

+1

Vous pouvez définir un préfixe pour les clés memcache afin que vous puissiez simplement configurer les deux sites pour utiliser un préfixe différent et savoir que toutes les clés seraient A_UserTable ou B_UserTable ... – Phill

Répondre

2

Je ne suis pas sûr si vous aurez chevauché, écrasé des données. Vous devrez vérifier quelles clés de cache sont utilisées. Cependant, lectures intéressantes que vous pourriez trouver utiles:

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

Le dernier est probablement plus utile pour vous. L'auteur a fait quelque chose de similaire à ce que vous essayez de faire, sauf que vous êtes en train de vous faciliter la vie en n'ayant (en quelque sorte) aucun conflit de clé primaire.

+0

Je pense que vous avez mal compris. Je pense que nous pouvons en fait avoir des conflits clés primaires. – Andy

Questions connexes