Come usare Redis Ordined Set

Come usare Redis Ordined Set
I set ordinati sono uno dei tipi di dati più preziosi e avanzati in Redis. I set ordinati sono molto simili ai set perché entrambi contengono sequenze di stringhe non ripetute. Tuttavia, a differenza dei set standard, i set ordinati includono un valore di punteggio associato a ciascun membro.

Il valore del punteggio consente loro di essere ordinati in un ordine specifico. Ogni membro di un set ordinato deve essere unico ma può condividere un valore del punteggio con più membri.

In questo tutorial, imparerai tutto sui set ordinati in Redis e su come usarli nei tuoi database.

Assicurati di avere un server Redis esistente installato ed in esecuzione per seguire questo tutorial.

Creazione di set ordinati

Per creare un set ordinato in Redis, utilizzare il comando ZADD nella CLI Redis. Il comando ZADD prende tre argomenti principali.

Il primo è il nome della chiave che contiene il set ordinato.

Il secondo argomento contiene il punteggio del membro che viene aggiunto al set ordinato.

L'argomento finale e terzo è il valore effettivo del membro nel set ordinato.

Nota: l'ordine degli argomenti conta poiché ciascuno rappresenta i valori dettati sopra.

Dai un'occhiata all'esempio mostrato di seguito.

127.0.0.1: 6379> Capitani Zadd 1 "Jonathan Archer"

Il comando sopra crea un set ordinato contenente i nomi dei capitani di Star Trek. Nell'esempio sopra, il valore di "Jonathan Archer" ha un punteggio di 1.

Il comando restituisce un valore intero che indica il numero totale di membri aggiunti al set ordinato.

Redis non ti limita ad aggiungere un singolo membro al set. Puoi aggiungere più valori. Per esempio:

Zadd Capitani 2 "Carol Freeman" 4 "Christopher Pike" 1 "Jean-Luc Picard" 3 "Kathryn Janeway."

Noterai due cose principali nel comando sopra:

  1. Innanzitutto, il punteggio per ciascun membro nell'ordinato non deve essere sequenziale. È possibile assegnare un punteggio di 100 a un membro anche se gli altri punteggi non sono impostati su alcun valore.
  2. In secondo luogo, un membro può avere un punteggio simile a un altro membro nel set ordinato.

Opzioni di comando ZADD.

Il comando ZADD accetta più opzioni per modificarne il comportamento e la funzionalità. Queste opzioni includono:

  1. NX - L'opzione NX indica al comando ZADD solo per aggiungere nuovi membri. Questa opzione impedisce al comando di aggiornare i membri esistenti nel set specificato.
  2. D'altra parte, XX - l'opzione XX aggiornerà solo i membri esistenti e non aggiungerà nuovi membri al set.

Nota: le opzioni NX e XX sono in conflitto. Quindi, puoi usare solo un'opzione in un singolo comando.

  1. CH - L'opzione CH dice a Zadd di includere il numero di elementi modificati. Per impostazione predefinita, Zadd restituirà solo il numero di elementi appena aggiunti. Il comando ZADD restituirà il numero di elementi aggiunti e elementi aggiornati utilizzando l'opzione CH.
  2. Incr - L'opzione incring indica al comando ZADD di incrementare il punteggio di un membro. Se il membro specificato non esiste nel set ordinato, Redis lo creerà automaticamente e imposterà l'incremento come punteggio.

Nota: si consiglia l'utilizzo del comando zincrby anziché Zadd con l'opzione. Entrambi svolgono la stessa funzione.

Prendi i membri da un set ordinato

Per recuperare i membri di un set ordinato in Redis, utilizzare il comando zrange. Il comando prende il nome della chiave e un intervallo specifico dei membri che si desidera recuperare. I valori di intervallo dei membri del set ordinato sono indici a base zero. Quindi, il primo membro nel set è all'indice 0.

Ad esempio, per recuperare i membri dall'indice da 0 a 10, immettere il comando:

127.0.0.1: 6379> Capitani Zrange 0 10

Il comando restituirà i membri entro quell'intervallo specificato. L'output di esempio è come mostrato di seguito:

1) "Jonathan Archer"
2) "Carol Freeman"
3) "Kathryn Janeway"
4) "Christopher Pike"
5) "Jean-Luc Picard"

Nei casi in cui il set ordinato contiene membri con un valore di punteggio simile, i membri saranno ordinati in ordine lessicografico.

Se si desidera ottenere i membri all'interno del set e dei loro punteggi associati, è possibile utilizzare l'opzione WithScores.

127.0.0.1: 6379> Capitani Zrange 0 10 WithScores

L'output di esempio dal comando sopra è come mostrato.

1) "Jonathan Archer"
2) "1"
3) "Carol Freeman"
4) "2"
5) "Kathryn Janeway"
6) "3"
7) "Christopher Pike"
8) "4"
9) "Jean-Luc Picard"
10) "5"

Supponiamo di voler ottenere i membri in ordine inverso. Ricorda che il comando zrange restituisce i membri solo in ordine crescente. Per ottenere l'ordine inverso, utilizzare il comando zrevrange.

127.0.0.1: 6379> Capitani Zrevrange 0 10

Il comando comporterà un ordine inverso.

1) "Jean-Luc Picard"
2) "Christopher Pike"
3) "Kathryn Janeway"
4) "Carol Freeman"
5) "Jonathan Archer"

Puoi anche includere l'opzione WithOptions nel comando zrevrange.

1) "Jean-Luc Picard"
2) "5"
3) "Christopher Pike"
4) "4"
5) "Kathryn Janeway"
6) "3"
7) "Carol Freeman"
8) "2"
9) "Jonathan Archer"
10) "1"

Il valore risultante conterrà i punteggi in ordine inverso.

Rimuovere i membri da un set ordinato

Per rimuovere i membri da un set ordinato, utilizzare il comando zrem.

127.0.0.1: 6379> Capitani Zrem "Jonathan Archer"

Il comando restituirà un valore intero che mostra il numero di elementi rimossi dal set ordinato.

Per rimuovere gli articoli per intervallo, utilizzare il comando zrembyrange.

127.0.0.1: 6379> Capitani zremrangebylex [A [Z

Il comando rimuoverà i valori in base al loro intervallo di lexico.

Per rimuovere i membri sul loro intervallo di punteggio, utilizzare il comando zremrangebycore.

127.0.0.1: 6379> Capitani ZremrangeBycore 0 5

Ottieni informazioni sui set ordinati

Usa il comando ZCARD per recuperare il numero di membri in un determinato set.

127.0.0.1: 6379> Capitani ZCARD

Il valore di ritorno è un numero intero che mostra il numero di elementi in un set.

Se si desidera ottenere il numero di membri all'interno di un intervallo specifico, usa il comando ZCOUNT.

127.0.0.1: 6379> Capitani ZCOUNT 0 10

Allo stesso modo, il comando restituisce un valore intero.

Per ottenere il punteggio di un membro specifico all'interno di un set ordinato, utilizzare il comando ZScore:

127.0.0.1: 6379> Capitani ZScore "Carol Freeman"
"2"

Il comando restituirà il punteggio del membro se esiste.

Conclusione

Questo articolo ha discusso di come iniziare e utilizzare i set ordinati in Ruby. Tieni presente che ci sono altri set ordinati di quanto non discusso in questa guida. Considera la documentazione per saperne di più.