Redis ZrevRange

Redis ZrevRange
“A estrutura de dados do conjunto de dados classificados é um tipo de dados especial introduzido pela Redis, onde os elementos armazenados são ordenados em ordem crescente. Os membros armazenados dentro de um conjunto classificado são mais parecidos com pares de valor de campo de um hash redis. Cada membro está associado a uma pontuação e classificação onde a consulta pode ser feita por ambas as propriedades. A classificação ou índice é atribuído a cada membro a partir de zero; O próximo elemento é um, e assim por diante. Além disso, o índice pode ser um valor negativo. A classificação -1 indica o último membro do conjunto classificado. O elemento ao lado do último elemento é indicado pelo índice -2 e assim por diante.

Os comandos ZrevRange e Zrange são capazes de recuperar membros entre uma gama especificada de índices de um conjunto classificado armazenado em uma determinada chave. Esses comandos aceitam os valores de índice positivo e negativo ao consultar os membros de um determinado intervalo. Neste guia, estaremos focados no comando ZrevRange e em seu uso prático.”

Comando Redis ZrevRange

O comando zrevRange é usado para consultar os membros entre os valores mínimos e máximos especificados de um conjunto classificado armazenado em uma determinada chave. Os membros são devolvidos em ordem decrescente com base em seu valor de pontuação. Sempre que os vários membros têm a mesma pontuação, os elementos serão ordenados lexicograficamente.

Sintaxe

ZREVRANGE STORNED_SET_KEY START_INDEX END_INDEX [WITHSCORES]

STORD_SET_KEY: Este é o ID exclusivo que identifica o conjunto classificado no Redis Data Store

start_index: O índice inicial do intervalo especificado

end_index: O índice final do intervalo especificado

[Withscores]: Este é um argumento opcional quando os membros especificados serão devolvidos com suas pontuações.

O comando retornará uma variedade de membros armazenados entre o intervalo de índice especificado. Se o Withscores Argumento foi especificado, as pontuações serão incluídas na saída.

Exemplo: devolva os jogadores que concluíram o maior número de níveis em um jogo online

Vamos supor um jogo da comunidade online, onde cada jogador é classificado com base no número de níveis concluídos. No final de cada semana, os três principais jogadores recebem presentes de bônus. Portanto, precisamos consultar os três principais jogadores que completaram o maior número de níveis do jogo. Podemos atribuir o número de níveis concluídos como a pontuação de um membro armazenado em um conjunto classificado Redis.

Primeiro, adicionaremos alguns jogadores a um conjunto classificado chamado Gameleaderboard.

Zadd gameleaderboard 4 jogador: 1
Zadd gameleaderboard 2 jogador: 3
Zadd gameleaderboard 5 jogador: 2
Zadd gameleaderboard 1 jogador: 4
Zadd gameleaderboard 10 jogador: 5

No exemplo acima, Jogador: 1 completou 4 níveis, Jogador: 5 completou 10 níveis e assim por diante. As informações acima sobre um jogador foram mapeadas para um conjunto classificado, conforme mostrado no seguinte.

Vamos usar o comando ZrevRange para consultar todos os membros cuja contagem de nível concluída é maior e vai para o topo da lista.

zrevRange gameleaderboard 0 4

Como na ilustração acima, os índices de conjunto classificados se espalharam de 0 a 4. Portanto, especificamos os índices de início e final como 0 e 4, respectivamente, que devem devolver idealmente todos os membros pertencentes ao conjunto classificado identificado pela chave Gameleaderboard aS Você pode ver, ele ordenou que os membros de uma maneira que a maioria dos jogadores tenha o maior número de níveis concluídos no jogo.

Consulta membros com suas pontuações
O comando Zrange pode ser usado com o argumento opcional do Withscores para exibir os valores de pontuação de cada jogador no exemplo acima.

zrevRange gameleaderboard 0 4 withscores

Saída

Os membros da consulta que começam a partir do final do conjunto classificado
Em todos os exemplos acima, usamos o índice baseado em 0 que conta desde o início do conjunto classificado. Podemos especificar o intervalo de índice a partir do final do conjunto classificado também. Digamos que precisamos consultar os jogadores cujas pontuações são as mais baixas usando o comando zrevrange.

zrevRange gameleaderboard -3 -1 withscores

Nesse caso, o índice final foi especificado como -1, o que significa o último elemento. O índice de início é -3. Portanto, ele consultará os membros até o 3º membro do final do conjunto classificado. Isso é muito claro se você usar a figura acima, que mostra como os índices podem ser usados ​​em ambos os lados.

O comando zrange em vez de zrevrange

O comando ZrevRange foi obsoleto da versão 6 Redis.2.0. Portanto, recomenda -se usar o comando Zrange com o argumento opcional Rev, que se comporta o mesmo que o comando ZrevRange.

Conclusão

Para resumir, o comando ZrevRange é usado para consultar os membros entre um mínimo especificado e os índices máximos de um conjunto classificado por redis armazenado em uma determinada chave. Recupera os membros armazenados entre os valores de índice especificados em ordem inversa. Além da ordem invertida dos membros, esse comando se comporta semelhante ao comando Zrange. Como afirmado acima, possui uma complexidade do tempo logarítmico, que torna o comando muito rápido para usar em aplicativos em tempo real com eficiência. Portanto, o comando ZrevRange é ideal para usar sempre que você precisar recuperar elementos em ordem decrescente de um conjunto classificado.