Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# StackExchange.Redis能否用于存储POCO?_C#_Redis_Stackexchange.redis_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack.redis - Fatal编程技术网 servicestack.redis,C#,Redis,Stackexchange.redis,servicestack.redis" /> servicestack.redis,C#,Redis,Stackexchange.redis,servicestack.redis" />

C# StackExchange.Redis能否用于存储POCO?

C# 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

我试图使用两个著名的C#驱动程序和。不幸的是,我不能使用ServiceStack,因为它不是免费的。现在我在尝试StackExchange


有人知道我是否可以使用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很好——它具有可读性的优势,但代价是大小。