2016-08-19 2 views
1

In meinem Redis DB speichern möchte ich folgende Daten speichern:Effiziente Möglichkeit, Daten in Redis DB

{"id": "1", "data": "abc", "param": "p1"} 
{"id": "2", "data": "def", "param": "p2"} 

Derzeit Ich spare jede Zeile wie folgt (mit Jedis Client in Java):

JEDIS.set(line.getId(),line.getLine()); 

So ist das Ergebnis etwas wie folgt aus:

"1", "{"id": "1", "data": "abc", "param": "p1"}" 

GET 1 
{"id": "1", "data": "abc", "param": "p1"} 

ist es eine effiziente Möglichkeit, diese Art von Daten in Redi zu speichern s? Vielleicht ist es besser, jede Zeile in eine Set oder so etwas umzuwandeln?

+0

Sicher, es ist eine effiziente Möglichkeit, * es * zu speichern. Aber wie willst du darauf zugreifen? Das ist das Wichtigste bei der Auswahl der richtigen Datenstruktur. –

+0

@KevinChristopherHenry: Ich bin neu in Redis, aber meine Idee war, Json Strings von Redis nach ID zu lesen und dann Parsing von meinem Code durchzuführen. Ich bin mir jedoch nicht sicher, ob es eine Möglichkeit gibt, dieses Parsen zu vermeiden und auch weniger Speicher zu verbrauchen. Das Problem ist, dass ich jetzt auch die Extra-Speicher-Ressourcen zum Speichern der Interpunktion von JSON-Strings verbrauchen (zB '{', '}', '' '). – HackerDuck

+0

Es klingt wie, was Sie brauchen, ist mongodb –

Antwort

3

Wenn alles, was Sie tun müssen, ist, Blobs von Daten zu bekommen und zu setzen, dann ist eine einfache Verwendung von GET und SET sinnvoll. Wenn die Speicherbelegung ein Problem darstellt, könnten Sie MessagePack anstelle von JSON verwenden.

Wenn Ihre üblichen Zugriffsmuster nicht das gesamte Objekt betreffen, ist eine Alternative die Verwendung eines Hash, da Sie Felder einzeln abrufen und festlegen können, wodurch die Menge der zu übertragenden Daten reduziert wird. (Es würde jedoch nicht den Gesamtspeicherbedarf für die Speicherung Ihrer Daten reduzieren.)

Verwandte Themen