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

Redis ist langsam, um große Strings zu bekommen

Redis ist nicht dafür ausgelegt, sehr große Objekte zu speichern. Sie sollten Ihre gesamte Sammlung nicht in einem einzigen String in Redis speichern, sondern Redis list oder set als Container für Ihre Objekte verwenden.

Außerdem ist das Pickle-Format nicht platzoptimiert ... man bräuchte ein kompakteres Format. Protokollpuffer, MessagePack oder sogar einfaches JSON sind dafür wahrscheinlich besser geeignet. Sie sollten erwägen, einen leichten Komprimierungsalgorithmus anzuwenden, bevor Sie Ihre Daten speichern (wie Snappy, LZO, Quicklz, LZF usw.).

Schließlich ist die Leistung wahrscheinlich netzwerkgebunden. Auf meinem Computer dauert das Abrufen eines 20-MB-Objekts von Redis 85 ms (nicht 3 Sekunden). Wenn ich jetzt den gleichen Test mit einem Remote-Server durchführe, dauert es 1,781 Sekunden, was in diesem 100-Mbit/s-Netzwerk erwartet wird. Die Dauer hängt vollständig von der Netzwerkbandbreite ab.

Letzter Punkt:Stellen Sie sicher, dass Sie eine aktuelle Redis-Version verwenden - es wurden einige Optimierungen vorgenommen, um mit großen Objekten umzugehen.