Ich bin neu bei Redis, und ich bin nicht sicher, warum diese Abfrage so lange dauern würde. Es ist 7mb String im Wesentlichen von einem JSON-Objekt. Ich habe HGet key data
und die Menge der Zeit, die es dauert 225 Millisekunden im Durchschnitt. Dies ist tatsächlich langsamer als der SQL-Server in derselben virtualisierten Umgebung. Sie haben die gleichen zugewiesenen Ressourcen.Redis 225 ms Abfrage des Hash-Werts
Die integrierte Latenz in der virtualisierten Umgebung ist nur etwa 9000
Mikrosekunden am schlimmsten.
Ich kann mich nicht einmal darum kümmern, wie etwas, das komplett im Speicher zwischengespeichert wird, länger dauert als die gleichen Daten in sql. Der Redis-Server benötigt etwa doppelt so lange. Hier ist ein Beispiel für die folgende Zeichenfolge.
[ {"name":"Christopher", "advocate": "John"}, {"name": "Jane", "advocate": "John"}, etc..]
Die SQL ist nur eine Tabelle mit den exakt gleichen Informationen.
| name | advocate |
| ---------- | -------- |
| Christopher | John |
| Jane | John |
Gibt es etwas, was ich für größere Objekte in Hash
bin fehlt, die die Leistung verbessern würde? Ich kann niemanden rechtfertigen, Redis zu benutzen, wenn die genau gleiche Abfrage im Speicher langsamer ist als sql. Ich verstehe, sobald ich anfange, die Join-Komplexität in SQL zu erhöhen, konnte ich mehr Verbesserung sehen. Aber ich denke nur, dass es noch mehr gibt, die ich bei Redis vermissen könnte.
Ich kann mehr Details zur Verfügung stellen, wenn Sie so brauchen.
Was kann ich tun, um die Zeit zu verbessern? –
Sie erwähnten Pipes. Wie kann ich die Größe meiner Pfeifen erhöhen? Sie haben auch erwähnt, dass es nicht dafür optimiert ist, wie kann ich große Objekte effizienter zurückgeben? Sollte ich diese Objekte in mehr Schlüsselwerte trennen, um die Größe zu verringern, und die JSON-Wiederholung von Feldern reduzieren und meine Schlüssel Repräsentationen dieser Objekte haben? –
Wenn Sie nicht die JSON-Felder von Redis manipulieren müssen (dh nur Ihre Daten als großen Blob speichern) - dann würde ich vorschlagen, die Daten-Client-Seite mit einem leichten Komprimierungsalgorithmus (LZ4, Snappy, LZO, etc ...) zu komprimieren.). –