Redis
 sql >> Database >  >> NoSQL >> Redis

Come dovrei usare Booksleeve con protobuf-net?

Questo è del tutto corretto. "Ottieni" (BookSleeve) restituisce un byte[] posticipato . Hai utilizzato correttamente Attendi per ottenere il byte[] effettivo , quindi ha utilizzato un MemoryStream su questo byte[] per chiamare Deserialize tramite protobuf-net.

Tutto bene.

Se chiarisci tutti i passaggi che ritieni brutti, potrei essere più specifico, ma:

  • BookSleeve è completamente asincrono tramite Task , da qui la necessità di Wait o ContinueWith per accedere al byte[]
  • protobuf-net è interamente basato su Stream, da qui la necessità di MemoryStream sedersi sopra un byte[]

Ovviamente, se aggiungi un metodo di utilità generico (magari un metodo di estensione) devi scriverlo solo una volta.

E con l'aggiunta di una classe wrapper (per alcuni tracking/sliding-expiry) e una cache L1 (Redis come L2), questo è praticamente esattamente il modo in cui lo usiamo in stackoverflow.

Una nota:la connessione è thread-safe e pensata per essere condivisa in modo massiccio; non eseguire una connessione per operazione.