¿Cómo implementas el último esquema en Redis? ¿Es posible?
Redis es sin esquema . Llamemos a lo que necesita un enfoque de almacenamiento de datos .
Un posible enfoque es usar HSET o HMSET para agregar estos objetos JSON por id, donde su id es la clave y el texto JSON es el valor . Llamaremos a este hash como users:byid .
Esta es la primera parte del problema. Ahora puedes obtener objetos por id .
Ahora, el siguiente problema es que desea recuperar objetos en un rango de lo que llama clasificación . Para obtener esto, debe almacenar sus objetos en un conjunto ordenado usando ZADD . Los conjuntos ordenados están ordenados por puntuación, y los elementos se almacenan con una puntuación . ¡Suena perfecto para su caso de uso!
En realidad, va a almacenar los identificadores de objetos en todo el conjunto ordenado:
zadd users:byranking 10 1 5 2
... donde 10 es la puntuación (es decir, su valor de clasificación real) y 1 el id y así sucesivamente.
Entonces, ¿cómo filtras los elementos por clasificación? Usando ZRANGEBYSCORE :
- Clasificando entre 0 y 10, excluyendo 10.
zrangebyscore users:byranking 0 (10 - Clasificando entre 0 y 10, incluido 10.
zrangebyscore users:byranking 0 10
El llamado ZRANGEBYSCORE le dará las identificaciones de los usuarios recuperados. ¿Cómo obtienes su texto JSON? Usando HMGET :
HMGET users:byid 1 2
...que obtendrá ambos usuarios con id 1 y 2 , si 10 la clasificación es inclusiva.