2016-08-12 3 views
0

Say I Benutzereinstellungen speichern möchten ... einfach so etwas wie dieses:Redis Cache-Lese-Performance - Root-Schlüssel/Wert-Paare vs hierarchische Struktur?

{ 
    "favoriteColor": "green", 
    "bestFriends": [ 
     "Tom", 
     "Jenny", 
     "Horton" 
    ] 
} 

Was die beste, performante Art und Weise ist das in redis Cache zu speichern (optimiert für liest)?

Stellen Sie sich vor UserId = 123

HINWEIS: Im Folgenden Ich bin mit der Art und Weise der Redis Dokumentation der verschiedenen Strukturen zu repräsentieren. Siehe here.

  1. Einfache, flache, Schlüssel/Wert-Paare direkt in der Wurzel?

    user-123-favoriteColor = green (this is a STRING type)
    user-123-bestFriends = 1) "bestFriends" (SET TYPE) 2) "Tom" 3) "Jenny" 4) "Horton"

  2. hierarchische Struktur (Hash-Werte)

    user-123 = 1) "favoriteColor" (STRING type) 2) "green" 3) "bestFriends" (SET TYPE) 4) "Tom" 5) "Jenny" 6) "Horton"

Und eine weitere Frage ... gibt es keinen Grund nicht Benutzereinstellungen in redis vs der Domäne zu speichern SQL-Datenbank?

Und eine weitere verwandte Frage ... ist es eine schlechte Idee, alle Benutzer unter einem Stammschlüssel namens "Benutzer" zu speichern?

Antwort

0

From the horses mouth:

Verwenden Hashes wenn möglich
Kleiner Hashes in einem sehr kleinen Raum kodiert werden, so dass Sie Ihre Hashes von Daten, die unter Verwendung jedes Mal, es möglich ist, versuchen sollten. Wenn Sie z. B. Objekte haben, die Benutzer in einer Webanwendung darstellen, verwenden Sie anstelle von verschiedenen Schlüsseln für Name, Vorname, E-Mail und Kennwort einen einzelnen Hash mit allen erforderlichen Feldern. Wenn Sie mehr darüber erfahren möchten, lesen Sie den nächsten Abschnitt.

Also die Antwort ist ja, benutze Hashes wo möglich.

Die Antwort here ist eine gute Möglichkeit, es zu tun.

1

Hierarchische Struktur sollte bevorzugt werden. Diese answer gibt eine Menge Erklärungen und half mir.