NHibernate MemCached w / Protobuf-net.Enyim - 它真的有效吗?

时间:2013-04-11 22:15:38

标签: nhibernate memcached protobuf-net nhibernate-caches enyim.caching

我已经使用以下程序集使用Protobuf-net二进制序列化器将NHibernate二级缓存与Enyim Memcached连接起来:

  • NHibernate的
  • NHibernate.Caches.EnyimMemcached
  • Enyim.Caching
  • protobuf网
  • 的protobuf-net.Enyim

最近我注意到,尽管使用EnyimMemcached连接protobuf-net,我可能实际上并没有使用该序列化程序,因为我的所有实体都只标有[Serializable]而且[DataContract]或{ {1}}具有相应的有序数据/ ProtoMembers属性。当我在添加适当的属性后直接与memcache交互(或者使用protobuf-net的RuntimeTypeModel.Default类手动注册它们)时,我可以使用protobuf-net与EnyimMemcached一起工作。

然而,即使我在使用protobuf-net注册我的类型时做了尽职调查,我也不认为来自NHibernate的任何缓存条目实际上都会被protobuf-net序列化,因为NHibernate.Caches.EnyimMemcached存储条目[ProtoContract]个对象中的缓存:

DictionaryEntry

bool returnOk = client.Store( StoreMode.Set, KeyAsString(key), new DictionaryEntry(GetAlternateKeyHash(key), value), TimeSpan.FromSeconds(expiry)); 没有DictionaryEntry[DataContract]属性。这让我很奇怪......

我是否可以正确使用protobuf-net序列化程序进行NHibernate二级缓存?

1 个答案:

答案 0 :(得分:0)

由于没有人回答你的问题,我不妨在这里说两句话。我不太了解Memcached作为二级缓存,但有强大的缓存解决方案,需要最少的代码更改才能开始用作二级缓存,并且序列化由缓存处理。您可以使用NCache as a level 2 cache for NHibernate