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.