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

Elementos de filtrado en Redis

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