"Vuoi implementare una classifica in tempo reale per il tuo prossimo gioco online con Redis? Redis fornisce una soluzione fuori dalla scatola per questo Zset, che è un breve nome per i set ordinati di Redis ed è uno strumento con cui ogni utente Redis deve avere familiarità con.
Redis Zset è una raccolta ordinata di membri unici in cui ciascun membro è associato a un valore del punteggio. Per evidenziare, gli ZSET sono ordinati dal loro valore di punteggio per impostazione predefinita, il che li rende abbastanza diversi dal normale tipo di set. Inoltre, più di un membro può contenere lo stesso valore di punteggio e ai membri verrà ordinato lessicograficamente in quel caso. I Redis ZSET sono una scelta migliore per le code prioritarie, l'indicizzazione secondaria, le classifiche a bassa latenza e i limitatori della tariffa. Perché gli ZSET forniscono richieste in tempo reale come la reattività e l'accesso in memoria con bassa latenza.
Inoltre, a ciascun membro viene assegnato un valore di rango in base alla propria posizione nello ZSET che è più simile a un indice basato su 0 in un array Java."
Una rapida occhiata ai comandi ZSET di base
Sono disponibili diversi comandi di base per aggiungere, recuperare e rimuovere i membri da un ZSET (set ordinato) memorizzato su un determinato tasto ZSET. Diamo un'occhiata rapida a tre comandi principali: Zadd, Zrange, Zrank e Zrem.
Un tempo reale Pokemon L'esempio della classifica di gioco sarà dimostrato qui.
Comando ZADD
Al momento della registrazione dell'utente, dobbiamo aggiungere ogni utente al nostro ZSET chiamato Pokemon: classifica. Quindi, il comando ZADD è il candidato ideale da usare come segue. Supponiamo che inizialmente abbiamo registrato cinque giocatori. Quindi, i punteggi saranno assegnati a 0.
Zadd Pokemon: classifica 0 John
Il valore di ritorno è 1, il che significa che un membro è stato aggiunto allo ZSET memorizzato su Key Pokemon: classifica. Se il membro è già disponibile nello ZSET dato, solo il valore del punteggio verrà aggiornato.
Siamo tutti bravi a procedere. Quindi, andiamo avanti e aggiungiamo i restanti quattro giocatori a Zset: Pokemon: classifica.
Zadd Pokemon: classifica 0 Anna
Zadd Pokemon: classifica 0 Zakariah
Zadd Pokemon: classifica 0 Bob
Zadd Pokemon: classifica 0 Mary
Comando zrange
Tutti e cinque i membri sono stati aggiunti con successo. Successivamente, dovremmo esaminare o interrogare i membri aggiunti usando il comando zrange. Il comando zrange consente di recuperare i membri che sono ordinati in un determinato intervallo. Un intervallo può essere specificato per rango, punteggio o valori lessicografici.
Interroghiamo tutti i membri specificando l'intervallo per valori di rango.
Zrange Pokemon: classifica 0 -1
Come previsto, tutti e cinque i membri sono stati restituiti e ordinati lessicograficamente perché i valori del punteggio sono gli stessi per tutti i membri a questo punto. Inoltre, 0 è l'indice di partenza/rango dell'intervallo e -1 indica l'indice più alto del dato ZSET.
Il comando zrange offre una vasta gamma di argomenti opzionali e useremo l'argomento WithScores con il comando sopra per visualizzare i punteggi associati per ciascun membro.
Zrange Pokemon: classifica 0 -1 con punteggi
Comando zincrby
Supponiamo che i giocatori abbiano giocato per alcune ore e che i punteggi siano aumentati da 0. Redis ZSets fornisce il comando zincrby per incrementare i punteggi di ciascun membro come segue.
Zincrby Pokemon: classifica 100 bob
Ciò dovrebbe incrementare il valore del bob membro da 0 a 100. Chiamiamo lo stesso comando per incrementare anche i punteggi di altri giocatori.
Zincrby Pokemon: classifica 200 Anna
Zincrby Pokemon: classifica 76 Zakariah
Zincrby Pokemon: classifica 450 Mary
Zincrby Pokemon: classifica 167 John
Secondo i valori di ritorno, i punteggi avrebbero dovuto essere aggiornati correttamente. Usiamo il comando zrange una volta per recuperare nuovamente i membri con i loro punteggi.
Bravo! I punteggi dei giocatori sono stati adeguatamente aggiornati. Inoltre, i membri sono ordinati dai loro punteggi in ordine crescente che è una caratteristica interessante di Redis ZSets.
Comando zrevrank
È un must per mostrare il grado di ogni giocatore in una classifica. Quindi, il comando Zrevrank viene utilizzato per mostrare il grado di membri in cui l'elemento associato al punteggio più alto sarà il 0 ° grado, e il prossimo più alto sarà il 1 ° grado, e così via.
Dal membro Maria ha il punteggio più alto, quell'elemento dovrebbe essere classificato come membro principale con il 0 ° grado. Usiamo il comando zrevrank come segue.
Zrevrank Pokemon: classifica Mary
Come previsto, il grado è 0, il che significa il miglior giocatore nella classifica del gioco.
Usiamo il comando Zrevrank con l'elemento Zakariah come segue. Idealmente, dovrebbe essere l'ultimo grado poiché questo membro ha il valore del punteggio più basso.
Comando zrem
Ogni volta che dobbiamo rimuovere un elemento o più elementi da uno ZSET, il comando ZREM è utile. Rimuoviamo Zakariah dalla classifica a causa del suo punteggio basso.
Zrem Pokemon: classifica Zakariah
È stato correttamente rimosso dallo ZSET.
Ancora più importante, i comandi ZSET hanno una complessità temporale O (log (n)), in cui n è il numero di elementi nel set ordinato, che è considerevolmente più veloce. Allo stesso tempo, il comando zrange dovrebbe essere usato con cura perché ha O (log (n) + l), dove l è il numero di risultati restituiti dal comando. Quindi, potrebbe causare problemi di prestazioni quando si lavora con set di dati più grandi.
Conclusione
In sintesi, Redis Zset è un nome breve per un tipo di dati set ordinato che può contenere membri univoci ordinati dai loro valori di punteggio. Come discusso, i membri ZSET sono stringhe non ripetute e i valori del punteggio possono essere ripetuti. Quando sono assegnati più membri con lo stesso valore del punteggio, a quei membri verranno ordinati lessicograficamente. Gli ZSET sono un'ottima scelta per le classifiche in tempo reale, l'indicizzazione secondaria e le code prioritarie con maggiore reattività e bassa latenza nell'accesso alla memoria. Per concludere, sono disponibili diversi comandi per aggiungere, rimuovere e interrogare i membri da un determinato Redis Zset con facilità.