5

我正在使用 Enyim。缓存 C# 的 memcached 客户端服务器是http://memcached.org在最后一个版本的 ubuntu

MemcachedClient mc = new MemcachedClient();
XmlDocument xmlDocument = new XmlDocument();
mc.Store(StoreMode.Set, "foo", xmlDocument);
object myXml= mc.Get("foo");

而 myXml 为空,为什么有办法存储我的对象。目的:我试图在 Memcached 的代码中替换 HttpCache,但使用 HttpCache 我可以将复杂对象添加到缓存中。

这里 XmlDocument 是一个示例,但是对于一个简单的类它也不起作用

4

1 回答 1

9

为了使类与 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);

对于您自己的自定义类,您需要添加[Serializable]属性并遵循二进制序列化指南:SerializableAttribute Class

于 2011-08-29T13:00:22.413 回答