Redis Zrange

Redis Zrange

Conjuntos classificados Redis contêm membros exclusivos e não repetidos do tipo de string de maneira ordenada. Por padrão, os membros do conjunto classificado são ordenados em ordem crescente por seus valores de pontuação. Além disso, os conjuntos classificados mantêm um índice baseado em zero, onde os membros são classificados como 0, 1,… e assim por diante. Sempre que as pontuações são semelhantes entre dois ou mais membros, a ordem será feita por ordem lexicográfica. Como os elementos de conjunto classificados já estão encomendados, os membros podem ser consultados por classificação ou pontuação de uma maneira rápida. Além disso, os conjuntos classificados Redis são construídos em uma estrutura de dados portada dupla que permite a complexidade do tempo de adição, leitura, remoção e atualização de operações em O (log (n)).

Neste guia, focaremos no comando Zrange, que pode ser usado para consultar uma série de membros por suas pontuações, índices ou lexicograficamente.

O comando Zrange

O comando Zrange é usado para recuperar uma variedade de membros de um conjunto classificado armazenado em uma determinada chave. Este comando permite consultar uma variedade de elementos com base em diferentes propriedades, como classificação, pontuação ou ordem lexicográfica. Por padrão, o comando Zrange usa um intervalo baseado em índice. A sintaxe básica do comando Zrange é a seguinte.

Sintaxe:

ZRANGE STORD_SET_KEY START END [BYSCORE | BYLEX] [REV] [Contagem de deslocamento limite] [Withscores]
  • STORD_SET_KEY: A chave do conjunto classificado.
  • começar: O valor inicial da consulta de intervalo. Isso pode ser uma pontuação, classificação ou valor lexicográfico.
  • fim: O valor de fechamento da consulta de intervalo. Isso pode ser uma pontuação, classificação ou valor lexicográfico.

Os argumentos acima são obrigatórios para este comando, e alguns argumentos opcionais podem ser especificados da seguinte forma.

  • Byscore: O intervalo (argumentos iniciais e finais) é especificado com base nas pontuações.
  • BYLEX: O intervalo é especificado com base nos valores lexicográficos.
  • Rev: Este argumento reverterá a ordem dos membros retornados, onde o 0º índice manterá o membro com a pontuação mais alta.
  • LIMITE: Este argumento limitará o número de membros retornados de uma determinada deslocamento.
  • Withscores: Por padrão, o comando Zrange retorna apenas membros em um determinado intervalo de intervalo. Quando esse argumento é especificado, a saída contém os valores de pontuação associados a cada membro também.

Como mencionado, o comando Zrange retorna a lista de membros em um determinado intervalo de um conjunto classificado armazenado em uma determinada chave. Se o argumento do Withscores for especificado, a pontuação associada será exibida. Começando com Redis versão 6.2.0, ZREVRANGE, ZRANGEBYSCORE, ZREVRANGEBYBYSCORE, ZRANCERYBYBELL, ZREVRANGEBYLEX Os comandos podem ser substituídos pelo comando Zrange.

Use Caso 01 - Recuperando os 3 principais usuários com os pontos de experiência mais baixos em uma tabela de classificação de jogo

Intervalo baseado em índice

Vamos supor um jogo online em que cada usuário seja recompensado com pontos de experiência com base no número de missões concluídas. A estrutura de dados do Set Redis classificada é um candidato ideal para manter essas informações, como mostrado no seguinte.

Zadd OnlineGameUsers 3000 "Jack"
Zadd Online Gameusers 100 "Rihana"
Zadd Online Gameusers 1250 "Niku"
Zadd Online Gameusers 800 "Abigirl"
Zadd OnlineGameUsers 4500 "Dickson"

Como você pode ver, os pontos de experiência do jogo foram armazenados como a pontuação de cada membro.


Vamos inspecionar o conjunto classificado recém -criado armazenado no Key 'online gameusers'. Como a consulta de intervalo padrão é baseada em índices, especificaremos os limites mínimos e máximos como 0 e 5.

ZRANGE ONLINKGAMUSERS 0 5 Withscores


Como esperado, os membros são classificados por pontuações em ordem crescente. Vamos consultar os três principais usuários com os pontos de experiência mais baixos. Como o conjunto é classificado em ordem crescente, é rápido e trivial obter os três principais membros com os pontos mais baixos da seguinte forma.

ZRANGE ONLINKGAMUSERS 0 2 Withscores

Como discutido anteriormente, os conjuntos classificados têm índices baseados em zero. Portanto, os três primeiros elementos podem ser especificados como um intervalo de índice a partir de 0 a 2. A saída deve exibir os 3 principais elementos com as pontuações mais baixas da seguinte forma.

Use Caso 02 - Recuperação de usuários com mais de 3000 pontos de experiência em uma tabela de classificação de jogo

Nesse cenário, precisamos consultar todos os usuários que têm mais de 1000 pontos de experiência. Como estamos falando de um intervalo baseado em pontuação, vamos usar o argumento opcional ByScore para especificar o intervalo nos valores de pontuação.

ZRANGE ONLINEMEUSERS (3000 +INF BYSCORE WITHSCORES

Os limites do alcance foram especificados usando pontuações. Como precisamos de pontuações de mais de 3000, a pontuação de 3000 deve ser excluída. O comando Zrange suporta excluir pontuações prefixando -o com o personagem '('.


Como esperado, temos apenas um membro cujo ponto de experiência (pontuação) é superior a 3000.

Use Caso 03: Obtendo os 3 principais usuários que têm os pontos de experiência mais altos

Por padrão, o conjunto classificado ordena seus elementos em ordem crescente. Portanto, o membro com a pontuação mais baixa está posicionada no 0º índice. Para obter os três principais usuários com as pontuações mais altas, temos que passar o argumento do REV para o comando Zrange da seguinte maneira. Ele ordenará o conjunto classificado em ordem decrescente e consultará o intervalo de índice a partir de 0 a 2.

ZRANGE ONLINGMEUSERS 0 2 Withscores Rev

Use Caso 04 - Recuperação de usuários cujo nome começa com "L" ou a carta seguinte

O comando Zrange permite recuperar uma série de membros com base em valores lexicográficos se as pontuações forem semelhantes entre os membros. Vamos redefinir todas as pontuações para 0 da seguinte maneira.

Zadd OnlineGameUsers 0 "Jack"
Zadd OnlineGameUsers 0 "Rihana"
Zadd OnlineGameUsers 0 "Niku"
Zadd OnlineGameUsers 0 "Abigirl"
Zadd OnlineGameUsers 0 "Dickson"


Como esperado, os pontos de experiência (pontuações) foram redefinidos para 0, como mostrado no seguinte.


Vamos usar o argumento BYLEX para recuperar membros cujos nomes começam com a letra 'L' ou a seguinte carta.

ZRANGE ONLINKGAMUSERS [L + BYLEX

Os limites do alcance foram especificados usando valores de string (lexicográfico). A saída deve ser todos os membros cujos nomes começam com a letra 'L' ou a seguinte letra. Idealmente, "Niku", "Rihana" e "Dickson" deve ser a saída. A letra minúscula “D” vem após a maiúscula “L” de acordo com seus valores ASCII.

Conclusão

Em resumo, o comando Zrange é usado para buscar uma variedade de membros armazenados em um conjunto classificado armazenado em uma determinada chave. Como mencionado, este comando permite consultar uma variedade de elementos definidos por suas pontuações, classificações ou valores lexicográficos. Além disso, o comando Zrange pode ser usado com o argumento do REV para reverter a ordem de classificação. No geral, vários recursos são empacotados nesse comando e se tornou um substituto para vários comandos como ZRangeBylex, ZrangeByScore, etc.