gpt4 book ai didi

c# - 无法在 memcached 中存储复杂对象

转载 作者:太空狗 更新时间:2023-10-29 22:34:00 25 4
gpt4 key购买 nike

我正在使用 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 是一个例子,但是对于一个简单的类它也不起作用

最佳答案

为了让类与 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 .

关于c# - 无法在 memcached 中存储复杂对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7228321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com