2010-08-24 4 views
55

Sto imparando come utilizzare Redis per un mio progetto. Una cosa che non ho capito è che cosa sono esattamente i due punti nei nomi delle chiavi.Qual è lo scopo dei due punti all'interno delle chiavi Redis

ho visto i nomi di chiave come questi:

users:bob 
color:blue 
item:bag 

Vuol colon tasti separati in categorie e fare trovare le chiavi più veloce? In tal caso, è possibile utilizzare più due punti quando si assegnano le chiavi ai nomi per suddividerli in sottocategorie? Infine hanno qualcosa a che fare con la definizione di diversi database all'interno del server Redis?

Ho letto la documentazione e ho fatto numerose ricerche su Google, ma stranamente non riesco a trovare nulla di cui discuterne.

risposta

74

I due punti sono stati in versioni redis precedenti come un concetto per la memorizzazione di dati con nomi assegnati. Nelle prime versioni Redis supportate solo stringhe, se si voleva conservare l'e-mail e l'età del 'bob' si doveva memorizzare il tutto come una stringa, quindi i due punti sono stati utilizzati:

SET user:bob:email [email protected] 
SET user:bob:age 31 

Avevano non speciale le caratteristiche di gestione o prestazioni in redis, l'unico scopo era il namespace dei dati per trovarlo di nuovo. Al giorno d'oggi è possibile utilizzare gli hash per memorizzare la maggior parte dei tasti coloned:

HSET user:bob email [email protected] 
HSET user:bob age 31 

Non dovete dare un nome al hash "clienti: bob" potremmo chiamarlo "Bob", ma namespacing con l'utente-prefix sappiamo immediatamente quali informazioni questo hash dovrebbe/potrebbe avere.

+1

Grazie mille, esattamente quello che dovevo sapere :) – Ryan

+2

Mi chiedo perché ':' è stato scelto quando '.' sembra più comune in varie lingue per questo genere di cose. – CivFan

+2

Forse per essere esattamente diverso dall'operatore di punti utilizzato nella maggior parte delle lingue per l'accesso agli oggetti –

30

I due punti sono un modo per strutturare le chiavi. Non sono interpretati dai redis in alcun modo. Puoi anche usare qualsiasi altro delimitatore che ti piace o del tutto assente. Personalmente preferisco lo /, il che rende le mie chiavi simili ai percorsi del file system. Non hanno alcuna influenza sulle prestazioni, ma non dovresti renderle eccessivamente lunghe poiché redis deve tenere tutte le chiavi in ​​memoria.

Una buona struttura della chiave è importante per sfruttare la potenza del comando sort, che è la risposta di redis al join di SQL.

GET user:bob:color -> 'blue' 
GET user:alice:color -> 'red' 

SMEMBERS user:peter:friends -> alice, bob 

SORT user:peter:friends BY NOSORT GET user:*:color -> 'blue', 'red' 

Si può vedere che la struttura chiave permette di ricercare i colori SORT dell'utente facendo riferimento i tasti strutturati.

+1

L'uso di/è un ottimo suggerimento! –