Redis ZrangeByScore

Redis ZrangeByScore

Consultando elementos de conjunto Redis classificado

Os conjuntos classificados Redis são bem diferentes dos conjuntos normais. Embora ambos os tipos de set armazenem os membros únicos internos, os conjuntos classificados colocam os elementos de maneira ordenada. As principais propriedades do conjunto de classificação Redis são:

  • Cada elemento atribuído a um índice exclusivo (RAND) a partir de 0
  • Índice baseado em pedidos de pontuação por cada elemento
  • Índice baseado em ordem lexicográfica por cada elemento

Portanto, os membros do conjunto de Redis classificados podem ser recuperados com base em várias medidas como pontuação, classificação (índice) e lexicographicical. ZrangeByScore e Zrange são os dois principais comandos do Set Redis que podem ser usados ​​para iterar sobre os membros com base nas medidas previamente declaradas. Neste guia, focaremos no comando ZrangeByScore que é usado para consultar membros por vários valores de pontuação.

O comando ZrangeByScore

Como o comando ZrangeByScore tem uma complexidade do tempo logarítmico, é muito rápido em recuperar os elementos do conjunto classificado. Além disso, as opções de comando como limite reduzem o tempo de recuperação em uma quantia considerável. Portanto, o comando ZrangeByScore é seguro para usar em aplicativos em tempo real de baixa latência, como tabelas de classificação on-line, filas prioritárias e indexação secundária em geral.

Sintaxe:

ZrangeByScore STORNED_SET_KEY MINIMUM_SCORE MAXIMUM_SCORE [WITHSCORES] [Contagem de deslocamento limite]

STORD_SET_KEY: Este é o identificador único em que o conjunto classificado é armazenado em.

minimum_score: O valor da pontuação limite inferior do intervalo especificado.

MAXIMUM_SCORe: O valor mais alto da pontuação do limite do intervalo especificado.

Withscores: Este argumento opcional retorna a pontuação de cada elemento.

LIMITE: Este argumento opcional pode ser usado para limitar a contagem de elementos de retorno de uma posição especificada do conjunto classificado.

O comando ZrangeByScore retorna os membros do conjunto classificado entre o especificado minimum_score e MAXIMUM_SCORE pontuações. Esses membros são devolvidos em ordem crescente com base nos valores de pontuação. Se os múltiplos membros tiverem as mesmas pontuações, o comando seguirá a ordem lexicográfica.

Exemplo: tabela de classificação de jogos online com base na experiência do jogador

Vamos supor que seja um jogo on -line em que cada jogador possa ganhar pontos de experiência quando concluir as missões, descobrir missões e derrotar os inimigos. Como os conjuntos classificados de Redis são responsivos e as estruturas de dados na memória, onde os membros são ordenados com base em uma pontuação, eles podem ser usados ​​para armazenar os detalhes do jogador. Por sua vez, as informações podem ser retornadas com baixa latência.

Conforme mostrado na ilustração anterior, as informações do jogador podem ser adicionadas a um conjunto Redis classificado e podem manipular mais tarde quando necessário.

Vamos adicionar os quatro jogadores mostrados na ilustração anterior. Vamos usar o comando zadd para criar e adicionar os detalhes do jogador ao conjunto classificado “Tabela de classificação: XP”.

Rosca de liderança ZADD: XP 1500 Player: 01
Rosca de liderança ZADD: XP 2500 Player: 02
Rosca de liderança ZADD: XP 1000 Player: 03
Rosca de liderança ZADD: XP 3500 Player: 04

Consulte todos os jogadores na tabela de classificação do jogo

Podemos usar o comando ZrangeByScore para buscar todos os jogadores na tabela de classificação do jogo, como mostrado no seguinte. Os valores de pontuação mínima e máxima são especificados como 1000 e 3500. Podemos usar o -inf e +inf valores se não tivermos certeza dos valores de pontuação mais baixos e mais altos:

tabela de classificação ZrangeByScore: XP 1000 3500
OU
tabela de classificação ZrangeByScore: XP -inf +INF

Todos os membros são devolvidos como na seguinte saída:

A saída é classificada na ordem ascendente por valores de pontuação.

Exclua os valores Minimum_Score ou Maximum_Score

No exemplo anterior, os valores de pontuação MIN e Max incluem o intervalo. Podemos excluir os valores de pontuação MIN e Max do intervalo prefixando a pontuação com o “(“ personagem (“como mostrado no seguinte:

Tabela de classificação ZrangeByScore: XP (1000 (3500

Como mostrado na saída a seguir, a saída exclui os membros cujas pontuações são 1000 e 3500.

Exibir os valores do membro e da pontuação juntos

Podemos usar o argumento opcional do Withscores com o comando ZrangeByScore para exibir os valores de pontuação por membro.

tabela de classificação ZrangeByScore: xp -inf +INF com escores

Saída:

Limitar o número de membros retornados

Em alguns cenários, precisamos limitar o número de membros retornados por chamada. Digamos que precisamos obter os 2 principais membros cujos valores de experiência (pontuação) são os mais baixos. Podemos usar o argumento limite com a contagem de 2 e deslocamento de 0. O deslocamento é a classificação por membro.

tabela de classificação ZrangeByScore: xp -inf +inf limite 0 2

Isso retorna os 2 principais membros cujas pontuações são as mais baixas.

Você pode usar o argumento limite com o argumento do withscores também.

Comando Zrange em vez de Zrangbyscore

Com o Redis 6.2.0 versão, o comando ZrangeByScore está depreciado. Portanto, podemos usar o comando Zrange que se comporta da mesma forma que o comando ZRAGNEBYSCORE quando é usado com o argumento opcional ByScore.

Conclusão

Em resumo, o comando ZrangeByScore é usado para consultar os membros entre os valores de pontuação mínima e máxima especificados de um conjunto classificado Redis armazenado em uma determinada chave. Como afirmado, este comando tem uma complexidade do tempo logarítmico que pode ser usada para iterar em um conjunto de membros com baixa latência. Além disso, ele suporta alguns argumentos opcionais, limitados e com escores, que limitam a contagem de membros devolvidos e exibe os pares de valor do escore-membro.