2010-07-06 9 views
0

J'ai remarqué que lorsque j'expulser des choses de la fabrique de sessions, le compteur cmd_flush est augmenté dans le serveur memcached. Cela rend la mise en cache moins utile car elle est réinitialisée assez souvent.Expulsion de NHibernate en envoyant la commande flush_all aux serveurs memcached

Voici mon code qui déclenche ceci:

session.SessionFactory.Evict(typeof(Foo)); 
session.SessionFactory.Evict(typeof(Bar)); 
session.SessionFactory.EvictQueries(key); 

Je n'ai pas compris comment NHibernate transforme ceci en une commande encore flush_all.

Est-ce que quelqu'un a des idées sur la façon d'expulser certains types d'objets de la mémoire cache sans tout faire disparaître?

Répondre

0

Apparemment SessionFactoryImpl.Evict appelle Cache.Clear() qui appelle client.FlushAll().

J'ai fini par peaufiner la conception de la base de données pour éviter d'avoir à expulser des objets moi-même.