sql >> Database >  >> NoSQL >> Redis

Hoe moet ik Booksleeve gebruiken met protobuf-net?

Dat klopt helemaal. "Get" (BookSleeve) retourneert een uitgestelde byte[] . Je hebt Wait to get the daadwerkelijke byte[] correct gebruikt , en gebruikte vervolgens een MemoryStream over deze byte[] om Deserialize . te bellen via protobuf-net.

Allemaal goed.

Als je stappen duidelijk maakt die je lelijk vindt, kan ik misschien specifieker zijn, maar:

  • BookSleeve is volledig async via Task , vandaar de noodzaak voor ofwel Wait of ContinueWith om toegang te krijgen tot de byte[]
  • protobuf-net is volledig op Stream gebaseerd, vandaar de noodzaak voor MemoryStream bovenop een byte[] zitten

Als u een generieke hulpprogrammamethode toevoegt (misschien een uitbreidingsmethode), hoeft u deze natuurlijk maar één keer te schrijven.

En met de toevoeging als een wrapper-klasse (voor sommige tracking/sliding-expiry) en een L1-cache (Redis als L2), is dit vrijwel precies hoe we het gebruiken bij stackoverflow.

Eén opmerking:de verbinding is thread-safe en bedoeld om massaal te worden gedeeld; doe geen verbinding per bewerking.




  1. Aantal verlopen sleutels vermeld door info-opdracht op redis-slave komt niet overeen met wat ik zie

  2. Null Pointer Exception Mongo Aggregation verkrijgen met behulp van lentegegevens (dynamische velden)

  3. MongoDB:find and findOne met geneste array-filtering

  4. replica Mongo docker-compose instellen