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.