首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在memcached中存储复杂对象

无法在memcached中存储复杂对象
EN

Stack Overflow用户
提问于 2011-08-29 17:25:58
回答 1查看 6.1K关注 0票数 5

我正在使用C#的memcached客户端Enyim.Caching,服务器是ubuntu最新版本上的http://memcached.org

代码语言:javascript
复制
MemcachedClient mc = new MemcachedClient();
XmlDocument xmlDocument = new XmlDocument();
mc.Store(StoreMode.Set, "foo", xmlDocument);
object myXml= mc.Get("foo");

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

这里XmlDocument是一个例子,但是对于一个简单的类,它也不能工作

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-29 21:00:22

为了让类与Memcached一起使用,它们需要支持二进制序列化,这允许将对象转换为平面字节数据表示,然后在Memcached服务器之间来回传输。

在您的示例中使用XmlDocument,它不是二进制可序列化的。您可以通过将其转换为可二进制序列化的string来解决此问题:

代码语言:javascript
复制
    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

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7228321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档