Redis Zinterstore

Redis Zinterstore

Definir interseção

Um conjunto é uma coleção de elementos como números, letras ou objetos do mundo real. Cada um desses membros é distinto ou único para um determinado conjunto. Eles sozinhos não podem fazer muitas coisas. Portanto, existem requisitos para fazer as relações entre dois ou mais conjuntos para gerar insights significativos. Como todos sabemos, números têm operações fundamentais, como adição, subtração, multiplicação e divisão. Da mesma maneira, os conjuntos vêm com quatro operações principais: união, interseção, diferença e complemento.

Neste guia, focaremos no comando Redis que opera nos conjuntos classificados para calcular a interseção de dois ou mais deles. Portanto, esta seção explica a operação de interseção definida. Como o nome sugere, a operação de interseção do conjunto calcula o conjunto de elementos comuns pertencentes a uma determinada lista de conjuntos.

O diagrama de Venn dado é uma representação de dois conjuntos com uma interseção. Existem três membros que visitam os dois sites A e B. Se levarmos os visitantes do Site A e B como Conjunto A e Set B, os três membros mencionados serão chamados de cruzamento do conjunto do conjunto A e do Set B.

A Redis suporta a estrutura de dados do conjunto de dados classificados para fora da caixa com operações de uso geral para adicionar, remover e consultar os elementos. Além disso, o Redis suporta operações mais avançadas em conjuntos classificados, como interseções definidas. A seção a seguir descreve o comando Zinterstore, que ajuda a calcular a interseção do conjunto em Redis:

Comando Redis Zinterstore

O comando Zinterstore opera em dois ou mais conjuntos classificados para calcular a interseção daqueles. Este comando cria um novo conjunto classificado a partir da interseção dos conjuntos especificados.

Como os elementos de conjunto Redis classificados estão associados a valores de pontuação, cada uma dessas pontuações é resumida por elemento comum e armazenada no conjunto de destino, conforme mostrado na ilustração a seguir:

Sintaxe:

A seguir, a sintaxe básica do comando Zinterstore:

Zinterstore destino_set number_of_sets set_key [set_key…] [peso peso [peso…]] [soma agregada | Min | Max]

destino_set: A chave do conjunto classificado que mantém a interseção dos conjuntos classificados especificados.

número_of_sets: O número de conjuntos classificados que o cruzamento do conjunto é calculado.

set_key: A chave ou identificador exclusivo do conjunto classificado.

Pesos: O fator de multiplicação para a pontuação de cada elemento nos conjuntos de origem.

AGREGAR: Esta opção especifica uma maneira de agregar as pontuações resultantes por elemento na interseção.

Por padrão, ele leva a soma das pontuações por elemento entre os conjuntos de fontes fornecidas. É possível especificar as pontuações mínimas ou máximas por elemento nos conjuntos de origem a que pertence.

Os pesos e os argumentos agregados são opcionais para o comando Zinterstore.

O comando Zinterstore retorna um valor inteiro, que é o número de membros do destino classificado destino_set.

Caso de uso - Inspecione os visitantes comuns em vários sites com suas contagens de visitantes

Vamos supor um cenário em que obtivemos dois sites A e B. Para obter uma imagem geral dos visitantes do site, precisamos consultar os usuários que estão visitando sites A e B. Além disso, temos um requisito para contar o número de visitas por cada membro.

Vamos criar dois conjuntos, Seta e Setb, conforme mostrado no seguinte:

Zadd seta 600 "John" 150 "Mary" 300 "Nick"
Zadd Setb 300 "Mary" 100 "Nick" 760 "Doe"

Podemos usar o comando ZintersCore para descobrir a interseção da seta e SETB. Idealmente, "Mary" e "Nick" devem ser a interseção dos dois conjuntos anteriores:

Zinterstore commonsiteVisitors 2 seta setb

Neste exemplo, usamos o CommonsiteVisitores Como a chave do conjunto classificado. É obrigatório especificar o número de conjuntos que usamos para calcular a interseção. Nesse caso, é 2.

O valor retornado é 2, o que significa que os dois membros devem ser armazenados no conjunto de destino classificado. Vamos inspecionar o conjunto classificado resultante CommonsiteVisitores Usando o comando ZrangeByScore:

Como esperado, os membros "Nick" e "Mary" estão no conjunto classificado resultante com os valores de pontuação somados. Neste exemplo, o membro "Nick" tem 300 e 100 pontuações em Seta e Setb, respectivamente. Portanto, a interseção desses dois conjuntos resumiu os valores de pontuação relevantes para "Nick". O mesmo aconteceu com o membro "Mary".

Vamos usar o fator de multiplicação 2 e 3 para Seta e Setb, respectivamente:

Zinterstore commonsiteVisitores 2 Seta Setb Weights 2 3

A pontuação de "Nick" é calculada multiplicando 300 e 100 por 2 e 3, respectivamente e somando os resultados. Portanto, a pontuação final deve ser 900. O mesmo procedimento é seguido pelo comando de Zinterstore para o outro membro.

Por padrão, as pontuações são agregadas somando -as, mas as outras opções também estão disponíveis. Podemos usar os argumentos MIN e Max que mantêm a pontuação mínima ou máxima por membro no conjunto classificado resultante.

Zinterstore commOnsiteVisitors 2 seta setb agregado max

Como esperado, o valor máximo de pontuação para os dois membros é 300 e é mantido no conjunto de destino classificado.

Conclusão

Em resumo, o comando zinterstore é usado para calcular a interseção para os múltiplos conjuntos classificados fornecidos. É capaz de extrair o cruzamento e armazená -lo em um novo conjunto classificado. Como mencionado anteriormente, as pontuações por membro nos conjuntos de fontes são somadas por padrão. Os argumentos mínimos e máximos podem ser passados ​​para o comando onde as pontuações são agregadas pela pontuação mínima ou máxima nos conjuntos de origem. Ao mesmo tempo, é possível especificar um fator de multiplicação para as pontuações de cada elemento no conjunto de interseção. No geral, o comando Zinterstore é confiável e proveitosa na computação das cruzamentos de conjunto.