Redis ZrangeByscore

Redis ZrangeByscore

Interrogazione di elementi set ordinati Redis

I set ordinati Redis sono abbastanza diversi dai set normali. Anche se entrambi i tipi di set archiviano i membri unici all'interno, i set ordinati mettono gli elementi in modo ordinato. Le proprietà principali del set ordinato Redis sono:

  • Ogni elemento assegnato a un indice univoco (RAND) a partire da 0
  • SCOGLIO INDICE BASATO ORDINE PER OGNI ELEMENTO
  • Indice basato su ordine lessicografico per ciascun elemento

Pertanto, i membri del set ordinato Redis possono essere recuperati in base a molteplici misure come punteggio, rango (indice) e lessicografico. ZrangeByscore e Zrange sono i due principali comandi set ordinati Redis che possono essere utilizzati per iterare sui membri in base alle misure precedentemente dichiarate. In questa guida, ci concentreremo sul comando zrangebycore che viene utilizzato per interrogare i membri con una serie di valori di punteggio.

Il comando zrangebycore

Poiché il comando zrangebycore ha una complessità temporale logaritmica, è molto veloce nel recuperare gli elementi set ordinati. Inoltre, le opzioni di comando come limite riducono il tempo di recupero di un importo considerevole. Pertanto, il comando ZrangeBysore è sicuro da utilizzare nelle applicazioni in tempo reale a bassa latenza come classifiche online, code prioritarie e indicizzazione secondaria in generale.

Sintassi:

Zrangebycore seled_set_key minimo_score Maximum_score [WithScores] [conteggio di offset limite]

Sorted_set_key: Questo è l'identificatore univoco in cui viene memorizzato il set ordinato.

minimo_score: Il valore del punteggio limite inferiore dell'intervallo specificato.

Maximum_score: Il valore del punteggio al contorno più elevato dell'intervallo specificato.

Con punteggi: Questo argomento opzionale restituisce il punteggio di ogni elemento.

LIMITE: Questo argomento opzionale può essere utilizzato per limitare il conteggio degli elementi di ritorno da una posizione specificata del set ordinato.

Il comando zrangebycore restituisce i membri del set ordinato tra il specificato minimo_score E Maximum_score punteggi. Quei membri vengono restituiti in ordine crescente in base ai valori del punteggio. Se i membri multipli hanno gli stessi punteggi, il comando segue l'ordinamento lessicografico.

Esempio: classifica di gioco online in base all'esperienza del giocatore

Supponiamo che si tratti di un gioco online in cui ogni giocatore può guadagnare punti esperienza quando completano le missioni, scoprono le missioni e sconfiggono i nemici. Poiché i set ordinati di Redis sono reattivi e le strutture di dati in memoria in cui i membri sono ordinati in base a un punteggio, possono essere utilizzati per archiviare i dettagli del giocatore. A loro volta, le informazioni possono essere restituite con bassa latenza.

Come mostrato nell'illustrazione precedente, le informazioni sul giocatore possono essere aggiunte a un set ordinato Redis e possono manipolare in seguito quando necessario.

Aggiungiamo i quattro giocatori mostrati nell'illustrazione precedente. Useremo il comando Zadd per creare e aggiungere i dettagli del giocatore al set ordinato "classifica: XP".

Casa di classifica Zadd: XP 1500 Player: 01
CAGLIORE DI ZADD: XP 2500 Player: 02
CAGLIORE DI ZADD: XP 1000 Player: 03
CAGLIORE DI ZADD: XP 3500 Player: 04

Interroga tutti i giocatori nella classifica del gioco

Possiamo usare il comando zrangebycore per recuperare tutti i giocatori nella classifica del gioco come mostrato nel seguente. I valori di punteggio minimo e massimo sono specificati come 1000 e 3500. Possiamo usare il -inf E +inf valori se non siamo sicuri dei valori di punteggio più bassi e più alti:

Cancarica ZrangeByScore: XP 1000 3500
O
Cancarica ZrangeByScore: XP -Inf +INF

Tutti i membri vengono restituiti come nella seguente uscita:

L'output è ordinato nell'ordine ascendente per valori di punteggio.

Escludi i valori minimi_score o Maximum_score

Nell'esempio precedente, i valori di punteggio Min e Max sono compresi l'intervallo. Possiamo escludere i valori del punteggio Min e Max dall'intervallo prefisso il punteggio con il "(" carattere come mostrato nel seguente:

Cancarica ZrangeByScore: XP (1000 (3500

Come mostrato nella seguente uscita, l'output esclude i membri i cui punteggi sono 1000 e 3500.

Visualizza i valori del membro e del punteggio insieme

Possiamo usare l'argomento opzionale con punteggio con il comando zrangebycore per visualizzare i valori del punteggio per membro.

Chiesa ZrangeByScore: XP -Inf +Inf WithScores

Produzione:

Limitare il numero di membri restituiti

In alcuni scenari, dobbiamo limitare il numero di membri restituiti per chiamata. Diciamo che dobbiamo ottenere i primi 2 membri i cui valori di esperienza (punteggio) sono i più bassi. Possiamo usare l'argomento limite con il conteggio di 2 e offset di 0. L'offset è il grado per membro.

Chiesa ZrangeByScore: XP -Inf +INF Limite 0 2

Questo restituisce i primi 2 membri i cui punteggi sono i più bassi.

Puoi anche usare l'argomento limite con l'argomento WithScores.

Comando zrange invece di zrangbycore

Con il Redis 6.2.0 versione, il comando zrangebycore è deprecato. Quindi, possiamo usare il comando zrange che si comporta allo stesso modo del comando zragnebycore quando viene utilizzato con l'argomento opzionale byscore.

Conclusione

In sintesi, il comando zrangebycore viene utilizzato per interrogare i membri tra i valori di punteggio minimo e massimo specificato di un set ordinato Redis memorizzato su una determinata chiave. Come affermato, questo comando ha una complessità temporale logaritmica che può essere utilizzata per iterare su una serie di membri con bassa latenza. Inoltre, supporta un paio di argomenti opzionali, limite e WithScores, che limitano il conteggio dei membri restituiti e visualizzano entrambe le coppie di valori del punteggio dei membri.