2017-05-16 7 views
0

Ich baue eine API, die rein die Speicherung von Daten behandelt.Wie werden gefilterte Daten gespeichert?

Lassen Sie uns innerhalb Redis vorstellen, ich habe die Schlüssel foo:123 20 Minuten lang in Erinnerung, die eine Eloquent Collection hält, da ich die Sammlung später statt Rückgabe des rohen json bin mit.

Als Beispiel die foo Sammlung könnte so aussehen

[ 
    { 
     "name":"Doe", 
     "first_name":"John", 
     "age":42, 
     "favorite_color":"red" 
    }, 
    { 
     "name":"Example", 
     "first_name":"Eric", 
     "age":37, 
     "favorite_color":"black" 
    }, 
    .... 
] 

Wie würde ich speichern eine neue Sammlung, die die gleiche Struktur aber Einträge hat schwarz als favorite_color mit? Würde ich etwas wie foo:123:black speichern müssen? Speichere ich die gesamte Sammlung und filtere sie manuell? Oder ist das bei der Verwendung von Redis komplett anders?

Antwort

1

F: Wie würde ich eine neue Sammlung speichern, die die gleiche Struktur hat, aber Einträge, die schwarz als favorite_color haben?

Warum nicht einfach über die Sammlung mappen und die favorite_color zu schwarz aktualisieren? https://laravel.com/docs/5.4/collections#method-map. Speichern Sie es dann wie Sie wollen, überschreiben Sie entweder die alten Daten oder erstellen Sie neue Daten.

Q: Müsste ich etwas wie foo speichern: 123: schwarz?

Es ist mir nicht klar, wonach Sie fragen. Ich bin mir nicht sicher, ob wir Ihnen eine Antwort geben können, wie Sie diese speichern oder die Namenskonvention.

F: Wird die gesamte Sammlung gespeichert und manuell gefiltert?

Dies muss anhand Ihrer App-Anforderungen entschieden werden. Es sollte möglich sein, eine Sammlung zu serialisieren und zu speichern, aber es kann eine große Verschwendung von Ressourcen sein, wenn Sie dies mit einer Reihe verschiedener Sammlungen tun, die geringfügige Unterschiede aufweisen.

+0

1) Ich meinte, dass ich alle Einträge aus der Datenbank holen soll, wo die favorite_color * schwarz * ist. 2) Die Frage ist, ob es in Ordnung ist, wenn so etwas als Schlüssel gespeichert wird => Wert oder das ist ein guter Punkt, um in Listen/Hashes/Sets zu graben. Und wenn ja, welches wäre das Beste für diesen Anwendungsfall. Aber danke bis jetzt! :) – Krenor

+0

Ja, viel davon wird generisch und meinungsbasiert sein, weil keiner von uns genug über Ihre Anwendung wissen wird. Ich würde sagen, worüber man sich mit foo Gedanken machen müsste: 123: Schwarz ist Namenskonflikte (könnte irgendetwas anderes den Namen foo: 123: schwarz haben? Ist schwarz einzigartig genug?), Ansonsten liegt es an Ihnen, auszuwählen ein Name. Gib nicht zu viel Energie für die Voroptimierung aus, tue das, was sich natürlich anfühlt, und arbeite dann an der Optimierung, wenn zu viel Speicher, CPU, Zeit usw. verbraucht wird. – Devon