Wir verfügen über eine iOS-App, die über die REST-API mit einem Django-Server kommuniziert. Die meisten Daten bestehen aus ziemlich großen Item-Objekten, die einige verwandte Modelle enthalten, die in ein einzelnes flaches Wörterbuch rendern, und diese Daten ändern sich selten.Verwenden von Redis als Zwischenspeicher für die REST-API
Wir haben festgestellt, dass das Abfragen von Postgres kein Problem ist, aber das Generieren von JSON-Antworten nimmt eine merkliche Zeit in Anspruch. Auf der anderen Seite variieren Artikel-Sammlungen pro Benutzer.
Ich dachte über ein Rendering-System nach, wo wir einfach ein Dictionary für Item-Objekt erstellen und es in redis als JSON-String speichern, so können wir API direkt von redis bereitstellen (zB HMGET (ID von Elementen in Benutzerbibliothek), Das ist schnell und macht es relativ einfach, "gerenderte Instanzen" zu regenerieren, im Grunde nur ein paar post_save
Signale.
Ich frage mich, wie gut dieses Design ist, gibt es irgendwelche größeren Mängel darin? Vielleicht gibt es einen besseren Weg für Die Aufgabe?
Wie groß sind die JSON-Antworten und wie lange dauert es, bis JSON dump ist? –
sagen etwa 300 dicts mit 20 Schlüsseln in ihnen mit einigen verschachtelten dicts, tastypie und django-rest-framework rendern diese für bis zu 1s auf MBPr –
hast du schon versucht cjson oder ultra json zu benutzen? –