2015-01-09 4 views
11

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

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

ответ

10

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

ОК спасибо за ответ – Sherry

+0

Это хороший пример, это, пожалуйста, пожалуйста, пожалуйста, не используйте BknaryFormatter. Когда-либо./cc @Duke –

+0

@MarcGravell Почему? – Frank