Redis zset

Redis zset

"¿Desea implementar una tabla de clasificación en tiempo real para su próximo juego en línea con Redis?? Redis proporciona una solución lista para usar para esto con Zsets, que es un nombre corto para los conjuntos clasificados de Redis y es una herramienta con la que todo usuario de Redis debe estar familiarizado.

Redis Zset es una colección ordenada de miembros únicos donde cada miembro está asociado con un valor de puntaje. Para resaltar, los Zsets están ordenados por su valor de puntaje por defecto, lo que los hace bastante diferentes del tipo de conjunto regular. Además, más de un miembro puede tener el mismo valor de puntaje, y los miembros serán ordenados lexicográficamente en ese caso. Los Redis Zsets son una mejor opción para colas prioritarias, indexación secundaria, tablas de clasificación de baja latencia y limitadores de tarifas. Porque los ZSET proporcionan demandas en tiempo real, como capacidad de respuesta y acceso en memoria con baja latencia.

Además, a cada miembro se le asigna un valor de rango basado en su posición en el ZSET que se parece más a un índice basado en 0 en una matriz Java."

Un vistazo rápido a los comandos básicos de zset

Varios comandos básicos están disponibles para agregar, buscar y eliminar miembros de un zset (conjunto ordenado) almacenado en una tecla ZSET dada. Echemos un vistazo rápido a tres comandos principales: Zadd, Zrange, Zrank y Zrem.

Un en tiempo real Pokemon El ejemplo de la tabla de clasificación de juegos se demostrará aquí.

Comando zadd

Tras el registro del usuario, debemos agregar cada usuario a nuestro ZSET nombrado Pokémon: tabla de clasificación. Entonces, el comando ZADD es el candidato ideal para usar de la siguiente manera. Suponga que tenemos cinco jugadores registrados inicialmente. Entonces, los puntajes se asignarán a 0.

Zadd Pokemon: tabla de clasificación 0 John

El valor de retorno es 1, lo que significa que se ha agregado un miembro al ZSet almacenado en Key Pokemon: Raeperboard. Si el miembro ya está disponible en el ZSET dado, solo se actualizará el valor de puntuación.

Todos somos buenos para proceder. Entonces, sigamos adelante y agregemos a los cuatro jugadores restantes al ZSET: Pokemon: Raeperboard.

Zadd Pokemon: tabla de clasificación 0 Anna
Zadd Pokemon: tabla de clasificación 0 Zakariah
Zadd Pokemon: tabla de clasificación 0 Bob
Zadd Pokemon: tabla de clasificación 0 Mary

Comando zrange

Los cinco miembros han sido agregados con éxito. A continuación, debemos examinar o consultar a los miembros agregados utilizando el comando zrange. El comando zrange permite que los miembros recuperados se clasifiquen en un rango dado. Se puede especificar un rango por rango, puntaje o valores lexicográficos.

Consultemos a todos los miembros especificando el rango por valores de rango.

ZRANGE POKEMON: RAAMEDBOAR 0 -1

Como se esperaba, los cinco miembros han sido devueltos y ordenados lexicográficamente porque los valores de puntaje son los mismos para todos los miembros en este momento. Además, 0 es el índice/rango inicial del rango, y -1 denota el índice superior del ZSET dado.

El comando ZRange ofrece una amplia gama de argumentos opcionales, y utilizaremos el argumento WithScores con el comando anterior para mostrar los puntajes asociados para cada miembro.

ZRANGE POKEMON: RAADERBOAR 0 -1 CONSCORSE

Comando Zincrby

Suponga que los jugadores han estado jugando durante algunas horas y los puntajes han aumentado de 0. Redis Zsets proporciona el comando Zincrby para incrementar las puntuaciones de cada miembro de la siguiente manera.

Zincrby Pokemon: tabla de clasificación 100 bob

Esto debería incrementar el valor del miembro Bob de 0 a 100. Llamemos al mismo comando para incrementar los puntajes de otros jugadores también.

Zincrby Pokemon: tabla de clasificación 200 Anna
Zincrby Pokemon: tabla de clasificación 76 Zakariah
Zincrby Pokemon: tabla de clasificación 450 Mary
Zincrby Pokemon: tabla de clasificación 167 John

Según los valores de retorno, los puntajes deberían haberse actualizado correctamente. Usemos el comando zrange una vez para recuperar a los miembros nuevamente con sus puntajes.

Bravo! Los puntajes de los jugadores se han actualizado correctamente. Además, los miembros son ordenados por sus puntajes en orden ascendente, que es una característica genial de Redis Zsets.

Comando ZrevRank

Es imprescindible mostrar el rango de cada jugador en una tabla de clasificación. Entonces, el comando Zrevrask se usa para mostrar el rango de miembros donde el elemento asociado con el puntaje más alto será el rango 0, y el próximo más alto será el primer rango, y así sucesivamente.

Desde miembro María tiene el puntaje más alto, ese elemento debe clasificarse como el miembro superior con el rango 0. Usemos el comando ZrevRank de la siguiente manera.

Zrevrank Pokemon: Rediocboard Mary

Como se esperaba, el rango es 0, lo que significa el mejor jugador en la tabla de clasificación del juego.

Usemos el comando Zrevrask con el elemento zakariah de la siguiente manera. Idealmente, debería ser el último rango ya que este miembro tiene el valor de puntaje más bajo.

Comando zrem

Siempre que necesitemos eliminar un elemento o múltiples elementos de un ZSET, el comando ZREM es útil. Eliminemos a Zakariah de la tabla de clasificación debido a su bajo puntaje.

Zrem Pokemon: tabla de clasificación Zakariah

Se ha eliminado correctamente del zset.

Lo más importante, los comandos Zset tienen una complejidad de tiempo o (log (n)), donde n es el número de elementos en el conjunto ordenado, que es considerablemente más rápido. Al mismo tiempo, el comando zRange debe usarse con cuidado porque tiene o (log (n) + l), donde l es el número de resultados devueltos por el comando. Por lo tanto, puede causar problemas de rendimiento cuando se trabaja con conjuntos de datos más grandes.

Conclusión

En resumen, Redis ZSet es un nombre corto para un tipo de datos de conjunto ordenado que puede contener a los miembros únicos ordenados por sus valores de puntaje. Como se discutió, los miembros de Zset son cadenas no repetidas, y los valores de puntaje se pueden repetir. Cuando se asignan múltiples miembros con el mismo valor de puntaje, esos miembros serán ordenados lexicográficamente. Los ZSET son una excelente opción para tablas de clasificación en tiempo real, indexación secundaria y colas de prioridad con mayor capacidad de respuesta y baja latencia en el acceso a la memoria. Para concluir, hay varios comandos disponibles para agregar, eliminar y consultar miembros de un Redis Zset dado con facilidad.