【发布时间】:2020-02-17 07:45:45
【问题描述】:
我正在使用 protobuf-net 2.3.3 在 redis 服务器 2.8.2103 上维护一个应用程序> 使用 StackExchange.Redis 1.2.6。
对于像这样的对象:
[ProtoContract(ImplicitFields = ImplicitFields.AllFields)]
public class Cachable { Foo[] Foos { get; set; } }
当我使用简单的保存时:
using (var memoryStream = new MemoryStream())
{
Serializer.Serialize(memoryStream, cachable);
database.HashSetAsync("category", "key", memoryStream.ToArray());
}
然后检索:
var response = database.HashGet("category", "key");
if (!response.HasValue) return null;
using (var memoryStream = new MemoryStream(response, false))
{
return Serializer.Deserialize<Cachable>(memoryStream);
}
如果缓存数组Foos 有一个空实例,如new Foo[0],一旦Cachable 被反序列化,数组就变成null。
这会改变应用程序某些部分的行为并产生错误。
这种行为是预期的吗?有什么办法可以改吗?
【问题讨论】:
标签: c# redis protobuf-net stackexchange.redis