Redis Zrevrange

Redis Zrevrange
“La struttura dei dati set ordinata è uno speciale tipo di dati introdotto da Redis in cui gli elementi memorizzati sono ordinati in ordine crescente. I membri memorizzati all'interno di un set ordinato sono più simili alle coppie di valore di campo di un hash Redis. Ogni membro è associato a un punteggio e un grado in cui la query può essere eseguita da entrambe le proprietà. Il grado o l'indice è assegnato a ciascun membro a partire da zero; L'elemento successivo è uno, e così via. Inoltre, l'indice può essere un valore negativo. Il rango -1 indica l'ultimo membro del set ordinato. L'elemento accanto all'ultimo elemento è indicato dall'indice -2 e così via.

I comandi Zrevrange e Zrange sono in grado di recuperare i membri tra una gamma specificata di indici di un set ordinato memorizzato con una determinata chiave. Questi comandi accettano sia i valori dell'indice positivo che negativo durante l'interrogazione dei membri di un determinato intervallo. In questa guida, ci concentreremo sul comando zrevrange e sul suo utilizzo pratico."

Comando Redis Zrevrange

Il comando zrevrange viene utilizzato per interrogare i membri tra i valori indici minimi e massimi specifici di un set ordinato memorizzato con una determinata chiave. I membri vengono restituiti in ordine decrescente in base al loro valore di punteggio. Ogni volta che i membri multipli hanno lo stesso punteggio, gli elementi verranno ordinati lessicograficamente.

Sintassi

ZRevRange Sort_Set_key Start_Index end_index [WithScores]

Sorted_set_key: Questo è l'ID univoco che identifica l'insieme ordinato nel Redis Data Store

start_index: L'indice iniziale dell'intervallo specificato

end_index: L'indice finale dell'intervallo specificato

[WithScores]: Questo è un argomento opzionale quando i membri specificati verranno restituiti con i loro punteggi.

Il comando restituirà una matrice di membri memorizzati tra l'intervallo di indice specificato. Se la Con punteggi È stato specificato l'argomento, i punteggi saranno inclusi nell'output.

Esempio: restituire i giocatori che hanno completato il maggior numero di livelli in un gioco online

Supponiamo che un gioco della comunità online in cui ogni giocatore è classificato in base al numero di livelli completati. Alla fine di ogni settimana, i primi tre giocatori ottengono regali bonus. Quindi, dobbiamo interrogare i primi 3 giocatori che hanno completato il maggior numero di livelli nel gioco. Possiamo assegnare il numero di livelli completati come il punteggio di un membro memorizzato in un set ordinato Redis.

Innanzitutto, aggiungeremo alcuni giocatori a un set ordinato chiamato Gamleaderboard.

Zadd Gamleaderboard 4 Player: 1
Zadd Gamleaderboard 2 Player: 3
Zadd Gamleaderboard 5 Player: 2
Zadd Gamleaderboard 1 Player: 4
Zadd Gamleaderboard 10 Player: 5

Nell'esempio sopra, Giocatore: 1 ha completato 4 livelli, Giocatore: 5 ha completato 10 livelli e così via. Le informazioni di cui sopra su un giocatore sono state mappate su un set ordinato, come mostrato nel seguente.

Usiamo il comando zrevrange per interrogare tutti i membri il cui conteggio di livello completato è più alto e va in cima alla lista.

zrevrange gamleaderboard 0 4

Come nell'illustrazione sopra, gli indici di set ordinati si diffondono da 0 a 4. Quindi, abbiamo specificato gli indici di avvio e fine come 0 e 4, rispettivamente, che dovrebbero idealmente restituire tutti i membri appartenenti al set ordinato identificato dalla chiave Gamleaderboard as puoi vedere, ha ordinato ai membri in modo tale che i migliori giocatori abbiano il maggior numero di livelli completati nel gioco.

Membri di query con i loro punteggi
Il comando zrange può essere utilizzato con l'argomento opzionale WithScores per visualizzare i valori del punteggio di ciascun giocatore nell'esempio sopra.

Zrevrange Gamleaderboard 0 4 WithScores

Produzione

Membri di query a partire dalla fine del set ordinato
In tutti gli esempi di cui sopra, abbiamo usato l'indice basato su 0 che conta dall'inizio del set ordinato. Possiamo specificare l'intervallo indice a partire dalla fine del set ordinato. Diciamo che dobbiamo interrogare i giocatori i cui punteggi sono i più bassi usando il comando zrevrange.

zrevrange gamleaderboard -3 -1 withscores

In questo caso, l'indice finale è stato specificato come -1, il che significa l'ultimo elemento. L'indice di avvio è -3. Quindi, interrogherà i membri fino al terzo membro dalla fine del set ordinato. Questo è molto chiaro se si utilizza la figura sopra, che mostra come gli indici possono essere utilizzati in entrambi i modi.

Il comando zrange invece di zrevrange

Il comando zrevrange è stato deprecato dalla versione 6 di Redis.2.0. Quindi, si consiglia di utilizzare il comando zrange con l'argomento rev opzionale, che si comporta come il comando zrevrange.

Conclusione

Per riassumere, il comando zrevrange viene utilizzato per interrogare i membri tra un indice minimo e massimo specificato da un set ordinato Redis memorizzato su una determinata chiave. Recupera i membri archiviati tra i valori dell'indice specificato in ordine inverso. Oltre all'ordinamento invertito dei membri, questo comando si comporta in modo simile al comando zrange. Come indicato sopra, ha una complessità temporale logaritmica che rende il comando abbastanza veloce da utilizzare in applicazioni in tempo reale in modo efficiente. Quindi, il comando zrevrange è l'ideale da utilizzare ogni volta che è necessario recuperare elementi in ordine decrescente da un set ordinato.