Может ли StackExchange.Redis использоваться для хранения POCO?

Я пытаюсь оценить Redis, используя два хорошо известных драйвера С# ServiceStack и StackExchange. К сожалению, я не могу использовать ServiceStack, потому что он не бесплатный. Теперь я пытаюсь StackExchange.

Кто-нибудь знает, есть ли у StackExchange.Redis я могу упорствовать в POCOs?

Ответ 1

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);
    }
}