Redis Zdiff

Redis Zdiff

Introdução à diferença definida

A diferença definida é uma das operações fundamentais que sempre esteve na lista junto com os outros dois conjuntos de operações e cruzamento de operações e interseção. Além disso, a diferença entre um determinado dois conjuntos produz outro conjunto. Considere os dois conjuntos A e B na seguinte ilustração:

A = "Jack", "Daniel", "Mary"
B = "Daniel", "Nick", "Mary", "Ricky"

A diferença definida A-B pode ser escrita da seguinte maneira:

A-b = "Jack", "Daniel", "Mary" - "Daniel", "Nick", "Mary", "Ricky"

Como os itens "Daniel" e "Mary" estão presentes nos dois conjuntos, eles são ignorados ao levar a diferença definida A-B. Portanto, a diferença definida A-B é a seguinte:

A-b = “jack”

Não precisa ser que A-B e B-A sejam os mesmos. Vamos considerar a diferença definida B-A:

B = "Daniel", "Nick", "Mary", "Ricky"
A = "Jack", "Daniel", "Mary"

B-a = “Daniel”, "Usuario", "Mary", "Ricky" - "Jack", "Daniel", "Mary"

B-A = "Nick", "Ricky"

A diferença definida pode ser visualizada usando um diagrama de Venn de maneira mais simples da seguinte maneira:

O comando zdiff

Os conjuntos classificados de Redis suportam as operações definidas, como união definida, interseção e diferença. Neste guia, vamos nos concentrar no comando zdiff que é usado para produzir a diferença de conjunto classificado. O comando Zdiff retorna outro conjunto classificado dos conjuntos classificados fornecidos.

Sintaxe:

O Comando Zdiff tem uma sintaxe simples, onde é obrigatório especificar o número de chaves como o primeiro argumento, como mostrado no seguinte:

Zdiff number_of_keys key [key…] [withscores]


número_of_keys: A contagem das chaves dos conjuntos classificados especificados.

chave: Uma chave do conjunto classificado especificado.

Withscores: Este é um parâmetro opcional. Quando esse argumento é especificado, as pontuações dos elementos de conjunto retornados são exibidos.

Este comando retorna um conjunto classificado que é a diferença entre os conjuntos classificados fornecidos. As pontuações do elemento são exibidas se o Withscores argumento é aprovado.

Use Caso 1: Encontre usuários que são veganos

Vamos supor que um restaurante mantém duas listas em que uma lista as pessoas que pedem vegetais e o outro registra as pessoas que pedem carne. Agora, eles querem identificar os veganos e enviar uma refeição vegetariana em seu aniversário. Redis classificado como estrutura de dados pode ser usada neste cenário.

Primeiro, criamos um conjunto para armazenar as pessoas que pediram refeições vegetais.

Zadd Vegiconsumers 10 Jack
Zadd Vegiconsumers 5 Mary
Zadd Vegiconsumers 13 Ricky


O valor da pontuação é usado como o número médio de refeições encomendadas por mês. Em seguida, criamos outro conjunto classificado chamado METUS -SUMERS.

Zadd Meatconsumers 22 Henrick
Zadd Meatconsumers 12 Mary
Zadd Meatconsumers 5 Ricky


Vamos inspecionar os membros de ambos os conjuntos classificados usando o comando Zrange.

Zrange Vegiconsumers 0 5
Sumers de carne ZRange 0 5


Saída:


Como esperado, ambos os conjuntos são preenchidos com os membros especificados anteriormente. Como a equipe de gerenciamento do restaurante precisa consultar os veganos, devemos preencher a diferença definida entre vegiconsumers e METUS -SUMERS. O comando a seguir preenche um conjunto classificado que consiste em usuários que só pediram as refeições de vegetais.

Zdiff 2 Vegiconsumers Meatconsumers


Como tomamos a diferença definida entre dois conjuntos, o primeiro argumento é definido como 2. Em seguida, especificamos as chaves dos dois conjuntos.

Podemos modificar o comando anterior para exibir o valor da pontuação do membro retornado.

Zdiff 2 Vegiconsumers Meatconsumers Withscores


Saída:


Como esperado, a diferença definida entre o vegiconsumers e METUS -SUMERS Produz um conjunto classificado com um membro, como mostrado no seguinte:

vegiconsumers = Mary, Jack, Ricky

MeatConsumers = Ricky, Mary, Henrick

vegiconsumers - meatconsumers = Mary, Jack, Ricky - Ricky, Mary, Henrick = Jack

Portanto, o único cliente vegano é "jack".

Use Caso 2: Encontre usuários que não sejam vegans

Da mesma forma, a gerência do restaurante pode consultar os clientes não veganos. Nesse caso, a diferença definida deve ser a seguinte:

METUS -SUMERS - VEGICONSUMERS

Vamos usar o comando zdiff com uma pequena modificação desta vez.

Zdiff 2 Meatconsumers Vegiconsumers Withscores


Saída:


Como esperado, o membro “Henry” é o único cliente que só pediu refeições com carne sem pedir refeição vegetal.

Conclusão

Em resumo, Redis suporta as operações da teoria dos conjuntos fundamentais, como união, interseção e diferença no tipo de dados de conjunto classificado. O comando zdiff é usado para produzir a diferença entre um determinado conjunto de dois conjuntos. Como mencionado, este comando retorna outro conjunto classificado que consiste nos membros que pertencem apenas ao primeiro conjunto classificado especificado. Como mostrado nos casos de uso anterior, é obrigatório especificar o número de chaves como o primeiro argumento a este comando. No geral, o comando zdiff quase tem complexidade do tempo logarítmico que pode ser usado com eficiência em aplicações de baixa latência.