¿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.