Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Filtrando elementos no Redis


Como você implementa o último esquema no Redis? É possível?

Redis é sem esquema . Vamos chamar o que você precisa de abordagem de armazenamento de dados .

Uma abordagem possível é usar HSET ou HMSET para adicionar esses objetos JSON por id, onde o id é a chave e o texto JSON é o valor . Chamaremos esse hash de users:byid .

Esta é a primeira parte do problema. Agora você pode obter objetos por id .

Agora, o próximo problema é que você deseja recuperar objetos em um intervalo do que você chama de classificação . Para obter isso, você precisa armazenar seus objetos em um conjunto ordenado usando ZADD . Os conjuntos ordenados são ordenados por pontuação, e os itens são armazenados com uma pontuação . Parece perfeito para o seu caso de uso!

Na verdade, você armazenará os ids de objetos em todo o conjunto classificado:

zadd users:byranking 10 1 5 2

... onde 10 é a pontuação (ou seja, seu valor real de classificação) e 1 o id e assim por diante.

Então, como você filtra itens por classificação? Usando ZRANGEBYSCORE :
  • Classificando entre 0 e 10, excluindo 10. zrangebyscore users:byranking 0 (10
  • Classificando entre 0 e 10, incluindo 10. zrangebyscore users:byranking 0 10

O chamado ZRANGEBYSCORE fornecerá os ids dos usuários recuperados. Como você obtém o texto JSON deles? Usando HMGET :
 HMGET users:byid 1 2

...que obterá ambos os usuários com id 1 e 2 , se 10 classificação é inclusiva.