C# StackExchange.Redis能否用于存储POCO?
我试图使用两个著名的C#驱动程序和。不幸的是,我不能使用ServiceStack,因为它不是免费的。现在我在尝试StackExchangeC# StackExchange.Redis能否用于存储POCO?,c#,redis,stackexchange.redis,
servicestack.redis,C#,Redis,Stackexchange.redis,
servicestack.redis,我试图使用两个著名的C#驱动程序和。不幸的是,我不能使用ServiceStack,因为它不是免费的。现在我在尝试StackExchange 有人知道我是否可以使用StackExchange.Redis持久化POCOs吗 StackExchange.Redis可以存储二进制安全的数据。这意味着您可以使用您选择的序列化技术轻松地序列化POCO并将其放入其中 下面的示例使用.NET。请注意,您必须使用SerializableAttribute来装饰您的类,以使其正常工作 示例集操作: PocoType
有人知道我是否可以使用StackExchange.Redis持久化POCOs吗 StackExchange.Redis可以存储二进制安全的数据。这意味着您可以使用您选择的序列化技术轻松地序列化POCO并将其放入其中 下面的示例使用.NET。请注意,您必须使用
SerializableAttribute
来装饰您的类,以使其正常工作
示例集操作:
PocoType somePoco = new PocoType { Id = 1, Name = "YouNameIt" };
string key = "myObject1";
byte[] bytes;
using (var stream = new MemoryStream())
{
new BinaryFormatter().Serialize(stream, somePoco);
bytes = stream.ToArray();
}
db.StringSet(key, bytes);
string key = "myObject1";
PocoType somePoco = null;
byte[] bytes = (byte[])db.StringGet(key);
if (bytes != null)
{
using (var stream = new MemoryStream(bytes))
{
somePoco = (PocoType) new BinaryFormatter().Deserialize(stream);
}
}
获取操作示例:
PocoType somePoco = new PocoType { Id = 1, Name = "YouNameIt" };
string key = "myObject1";
byte[] bytes;
using (var stream = new MemoryStream())
{
new BinaryFormatter().Serialize(stream, somePoco);
bytes = stream.ToArray();
}
db.StringSet(key, bytes);
string key = "myObject1";
PocoType somePoco = null;
byte[] bytes = (byte[])db.StringGet(key);
if (bytes != null)
{
using (var stream = new MemoryStream(bytes))
{
somePoco = (PocoType) new BinaryFormatter().Deserialize(stream);
}
}
这是一个很好的例子,请不要使用BknaryFormatter。永远/抄送@Duke@FrankBF在版本控制和重构方面非常糟糕,并且是特定于平台的。我强烈推荐一些为宽容的多平台工作而设计的东西;xml、json或二进制:protobuf等@MarcGravel是Newtonsoft。json是BinaryFormatter的一个很好的替代品?@Burak它确实是一个很好的成熟序列化程序。这取决于你的目标。如果您想最小化带宽和服务器端影响(CPU、内存),请使用protobuf net或bond之类的工具。如果这不重要的话:json很好——它具有可读性的优势,但代价是大小。