我正在使用C#的memcached客户端Enyim.Caching,服务器是ubuntu最新版本上的http://memcached.org
MemcachedClient mc = new MemcachedClient();
XmlDocument xmlDocument = new XmlDocument();
mc.Store(StoreMode.Set, "foo", xmlDocument);
object myXml= mc.Get("foo");和myXml为空,为什么有一种方法来存储我的对象。目的:我试图在Memcached的代码中替换HttpCache,但是使用HttpCache我可以将复杂的对象添加到缓存中。
这里XmlDocument是一个例子,但是对于一个简单的类,它也不能工作
发布于 2011-08-29 21:00:22
为了让类与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);对于您自己的自定义类,您需要添加[Serializable]属性并遵循二进制序列化的指导原则:SerializableAttribute Class。
https://stackoverflow.com/questions/7228321
复制相似问题