sql >> Base de Datos >  >> NoSQL >> Redis

¿Cómo debo usar Booksleeve con protobuf-net?

Eso es completamente correcto. "Get" (BookSleeve) devuelve un byte[] diferido . Ha utilizado correctamente Esperar para obtener el byte[] real , luego usó un MemoryStream sobre este byte[] para llamar a Deserialize vía protobuf-net.

Todo bien.

Si deja en claro cualquier paso que encuentre feo, podría ser más específico, pero:

  • BookSleeve es completamente asíncrono a través de Task , de ahí la necesidad de Wait o ContinueWith para acceder al byte[]
  • protobuf-net está completamente basado en Stream, de ahí la necesidad de MemoryStream para sentarse encima de un byte[]

Por supuesto, si agrega un método de utilidad genérico (tal vez un método de extensión), solo necesita escribirlo una vez.

Y con la adición de una clase contenedora (para algún seguimiento/caducidad deslizante) y un caché L1 (Redis como L2), así es como lo usamos en stackoverflow.

Una nota:la conexión es segura para subprocesos y está destinada a ser compartida de forma masiva; no haga una conexión por operación.