sql >> Base de Datos >  >> NoSQL >> Redis

Redis SortedSet:¿Cómo obtener valores en orden numérico en lugar de orden alfabético cuando dos valores tienen la misma puntuación?

Cuando los miembros de un conjunto ordenado tienen la misma puntuación, se ordenan lexicográficamente. No hay una forma sencilla de ordenarlos de manera diferente AFAIK, pero puede hacer la clasificación fácilmente del lado del cliente. Alternativamente, puede crear un script Lua corto que lo haga por usted en el servidor.

Hay una forma un poco hackish de que puedes salirte con la tuya sin recurrir a los enfoques anteriores. Según el ejemplo que proporcionó y suponiendo que tanto el rango como la identificación del usuario son números enteros, podría usar puntajes que son una combinación de ambos, así:

zadd game_rank 550006435 6435
zadd game_rank 556088561 6088561
zadd game_rank 550608825 608825

Esto le permitirá hacer rangos y obtendrá una clasificación "numérica" ​​para cada rango (es decir, con zrangebyscore game_rank 550000000 559999999 ).