StackExchange.Red可以用来存储POCO吗?

时间:2015-01-09 09:56:43

标签: c# redis stackexchange.redis servicestack.redis

我正在尝试使用两个众所周知的C#驱动程序ServiceStackStackExchange来评估Redis。不幸的是我无法使用ServiceStack,因为它不是免费的。现在我正在尝试StackExchange。

有人知道是否使用StackExchange.Redis我可以坚持POCO吗?

1 个答案:

答案 0 :(得分:17)

StackExchange.Redis可以存储二进制安全的Redis Strings。这意味着,您可以使用您选择的序列化技术轻松地序列化POCO并将其放入其中。

以下示例使用.NET BinaryFormatter。请注意,您必须使用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);
    }
}