sql >> Databáze >  >> NoSQL >> Redis

Jak bych měl používat Booksleeve s protobuf-net?

To je zcela správné. "Get" (BookSleeve) vrátí odložený byte[] . Správně jste použili Wait pro získání skutečného byte[] , pak použil MemoryStream přes tento byte[] volání Deserialize přes protobuf-net.

Všechno dobré.

Pokud objasníte jakékoli kroky, které vám připadají ošklivé, možná budu moci být konkrétnější, ale:

  • BookSleeve je zcela asynchronní prostřednictvím Task , proto je potřeba buď Wait nebo ContinueWith pro přístup k byte[]
  • protobuf-net je založen výhradně na streamu, proto je potřeba MemoryStream sedět nad byte[]

Samozřejmě, pokud přidáte obecnou obslužnou metodu (možná metodu rozšíření), stačí ji napsat pouze jednou.

A s přidáním třídy wrapper (pro některé sledování/posuvné vypršení platnosti) a mezipaměti L1 (Redis jako L2) je to skoro přesně to, jak ji používáme při stackoverflow.

Jedna poznámka:připojení je bezpečné pro vlákna a je určeno k hromadnému sdílení; neprovádějte připojení na operaci.




  1. MongoDB $substrBytes

  2. Mongoose JS findOne vždy vrátí hodnotu null

  3. Oznámení Redis:Získejte klíč a hodnotu po vypršení platnosti

  4. Deserializace polymorfních typů pomocí MongoDB C# Driver