Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Como devo usar o Booksleeve com o protobuf-net?


Isso é inteiramente correto. "Get" (BookSleeve) retorna um byte[] adiado . Você usou corretamente Wait para obter o byte[] real , então usou um MemoryStream sobre este byte[] para chamar Deserialize via protobuf-net.

Tudo certo.

Se você deixar claro quaisquer passos que considere feios, talvez eu possa ser mais específico, mas:
  • BookSleeve é ​​totalmente assíncrono por meio de Task , daí a necessidade de Wait ou ContinueWith para acessar o byte[]
  • protobuf-net é inteiramente baseado em Stream, daí a necessidade de MemoryStream para sentar em cima de um byte[]

Claro, se você adicionar um método utilitário genérico (talvez um método de extensão), você só precisa escrevê-lo uma vez.

E com a adição de uma classe wrapper (para algum rastreamento/expiração deslizante) e um cache L1 (Redis como L2), isso é exatamente como o usamos no stackoverflow.

Uma observação:a conexão é thread-safe e deve ser compartilhada em massa; não faça uma conexão por operação.