我正在使用Enyim。在最后一个版本的ubuntu上使用C#调用memcached客户端服务器http://memcached.org
MemcachedClient mc = new MemcachedClient();
XmlDocument xmlDocument = new XmlDocument();
mc.Store(StoreMode.Set, "foo", xmlDocument);
object myXml= mc.Get("foo");
并且myXml为null,为什么有一种存储我的对象的方法。 目的 : 我正在尝试在我的代码中替换HttpCache用于Memcached但是使用HttpCache我可以将复杂对象添加到缓存中。
这里XmlDocument是一个例子,但是使用简单的类它也不起作用
答案 0 :(得分:9)
为了使类与Memcached一起使用,它们需要支持二进制序列化,这允许将对象转换为扁平字节数据表示,然后传输到Memcached服务器和从Memcached服务器传输。
在您的示例中,您使用的是XmlDocument
,它不是二进制序列化的。您可以通过将其转换为{em> 二进制序列化的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);
对于您自己的自定义类,您需要添加[Serializable]
属性并遵循二进制序列化指南:SerializableAttribute Class。