Chr*_*ove 5 c# memcached enyim
我正在使用Enyim.Caching memcached客户端用于C#服务器是http://memcached.org在最新版本的ubuntu上
MemcachedClient mc = new MemcachedClient();
XmlDocument xmlDocument = new XmlDocument();
mc.Store(StoreMode.Set, "foo", xmlDocument);
object myXml= mc.Get("foo");
Run Code Online (Sandbox Code Playgroud)
并且myXml为null,为什么有一种存储我的对象的方法.目的:我正在尝试在我的代码中替换HttpCache用于Memcached但是使用HttpCache我可以将复杂对象添加到缓存中.
这里XmlDocument是一个例子,但是使用简单的类它也不起作用
为了使类与Memcached一起使用,它们需要支持二进制序列化,这允许将对象转换为扁平字节数据表示,然后传输到Memcached服务器和从Memcached服务器传输.
在您使用的示例中XmlDocument,这不是二进制可序列化的.您可以变通的作法是将其转换为从string哪个是二进制序列化:
MemcachedClient mc = new MemcachedClient();
XmlDocument xmlDocument = new XmlDocument();
mc.Store(StoreMode.Set, "foo", xmlDocument.OuterXml);
string myXml = mc.Get("foo");
XmlDocument xmlDocumentOut = new XmlDocument();
xmlDocumentOut.LoadXml(myXml);
Run Code Online (Sandbox Code Playgroud)
对于您自己的自定义类,您需要添加[Serializable]属性并遵循二进制序列化的准则:SerializableAttribute类.