Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Wie sollte ich Booksleeve mit protobuf-net verwenden?

Das ist völlig richtig. "Get" (BookSleeve) gibt ein zurückgestelltes byte[] zurück . Sie haben Wait korrekt verwendet, um das eigentliche byte[] zu erhalten , dann einen MemoryStream verwendet über dieses byte[] um Deserialize aufzurufen über protobuf-net.

Alles gut.

Wenn Sie Schritte deutlich machen, die Sie hässlich finden, kann ich vielleicht genauer sein, aber:

  • BookSleeve ist vollständig asynchron über Task , daher ist entweder Wait erforderlich oder ContinueWith um auf das byte[] zuzugreifen
  • protobuf-net ist vollständig Stream-basiert, daher die Notwendigkeit für MemoryStream auf einem byte[] sitzen

Wenn Sie eine generische Hilfsmethode (vielleicht eine Erweiterungsmethode) hinzufügen, müssen Sie sie natürlich nur einmal schreiben.

Und mit der Hinzufügung einer Wrapper-Klasse (für etwas Tracking/Sliding-Expiry) und einem L1-Cache (Redis als L2) ist dies ziemlich genau, wie wir es bei Stackoverflow verwenden.

Eine Anmerkung:Die Verbindung ist Thread-sicher und soll massiv geteilt werden; Stellen Sie keine Verbindung pro Operation her.