Redis ZinterStore

Redis ZinterStore

Impostare l'intersezione

Un set è una raccolta di elementi come numeri, lettere o oggetti del mondo reale. Ognuno di questi membri è distinto o unico per un determinato set. Solo loro non possono fare molte cose. Quindi, ci sono requisiti per fare le relazioni tra due o più set per generare approfondimenti significativi. Come tutti sappiamo, i numeri hanno operazioni fondamentali come aggiunta, sottrazione, moltiplicazione e divisione. Allo stesso modo, i set sono dotati di quattro operazioni principali: unione, intersezione, differenza e complemento.

In questa guida, ci concentreremo sul comando Redis che opera sui set ordinati per calcolare l'intersezione di due o più di essi. Quindi, questa sezione spiega l'operazione di intersezione impostata. Come suggerisce il nome, l'operazione di intersezione del set calcola l'insieme di elementi comuni appartenenti a un determinato elenco di set.

Il diagramma di Venn dato è una rappresentazione di due set con un incrocio. Ci sono tre membri che visitano entrambi i siti A e B. Se prendiamo i visitatori del sito A e B come set A e set B, i tre membri citati sono chiamati incrocio set di set A e set B.

Redis supporta la struttura dei dati set ordinata fuori dalla scatola con operazioni per lo scopo generale per aggiungere, rimuovere e interrogare gli elementi. Inoltre, Redis supporta operazioni più avanzate su set ordinati come le intersezioni. La sezione seguente descrive il comando ZinterStore che aiuta a calcolare l'intersezione set in Redis:

Comando Redis ZinterStore

Il comando ZinterStore opera su due o più set ordinati per calcolare l'intersezione di quelli. Questo comando crea un nuovo set ordinato dall'intersezione dei set specificati.

Poiché gli elementi set ordinati Redis sono associati ai valori del punteggio, ciascuno di questi punteggi è sommato per elemento comune e memorizzato nel set di destinazione come mostrato nella seguente illustrazione:

Sintassi:

Quanto segue è la sintassi di base del comando ZinterStore:

ZinterStore Destination_set Number_of_sets set_key [set_key…] [pesi pesi [peso ...]] [somma aggregata | Min | Max]

destinazione_set: La chiave del set ordinato che contiene l'intersezione dei set ordinati specificati.

NUMBER_OF_SETS: Il numero di set ordinati su cui viene calcolato l'intersezione set.

set_key: La chiave o l'identificatore univoco del set ordinato.

Pesi: Il fattore di moltiplicazione per il punteggio di ciascun elemento nei set di origine.

AGGREGATO: Questa opzione specifica un modo per aggregare i punteggi risultanti per elemento nell'intersezione.

Per impostazione predefinita, prende la somma dei punteggi per elemento tra i set di origine data. È possibile specificare i punteggi minimi o massimi per elemento attraverso i set di origine a cui appartiene.

Sia i pesi che gli argomenti aggregati sono facoltativi del comando zintrorstore.

Il comando ZinterStore restituisce un valore intero che è il numero di membri nella destinazione ordinata impostata su destinazione_set.

Caso di utilizzo: ispezionare i visitatori comuni su più siti Web con i conteggi dei visitatori

Supponiamo uno scenario in cui abbiamo ottenuto due siti Web A e B. Per ottenere un'immagine generale dei visitatori del sito, dobbiamo interrogare gli utenti che visitano sia i siti A e B. Inoltre, abbiamo l'obbligo di contare il numero di visite da parte di ciascun membro.

Creiamo due set, seta e setB, come mostrato nel seguente:

Zadd seta 600 "John" 150 "Mary" 300 "Nick"
ZADD SETB 300 "MARY" 100 "Nick" 760 "DOE"

Possiamo usare il comando zinterscore per scoprire l'intersezione di seta e setb. Idealmente, "Mary" e "Nick" dovrebbero essere l'intersezione dei due set precedenti:

ZinterStore CommoniteVisitor 2 seta setb

In questo esempio, abbiamo usato il Commonitevisitor Come set di destinazione ordinata. È obbligatorio specificare il numero di set che utilizziamo per calcolare l'intersezione. In questo caso, è 2.

Il valore restituito è 2, il che significa che i due membri dovrebbero essere archiviati nel set ordinato di destinazione. Ispezioniamo il set ordinato risultante Commonitevisitor Utilizzando il comando zrangebycore:

Come previsto, i membri "Nick" e "Mary" sono nel set ordinato risultante con i valori del punteggio sommato. In questo esempio, il membro "Nick" ha 300 e 100 punteggi in seta e setB, rispettivamente. Quindi, l'intersezione di questi due set ha sommato i valori di punteggio rilevanti per "Nick". Lo stesso è successo con il membro "Mary".

Usiamo il fattore di moltiplicazione 2 e 3 per seta e setB, rispettivamente:

ZinterStore CommoniteVisitor 2 seta setb pesi 2 3

Il punteggio di "Nick" viene calcolato moltiplicando rispettivamente 300 e 100 per 2 e 3, sommando i risultati. Quindi, il punteggio finale dovrebbe essere 900. La stessa procedura è seguita anche dal comando zintrorstore per l'altro membro.

Per impostazione predefinita, i punteggi sono aggregati sommandoli, ma le altre opzioni sono disponibili anche. Possiamo utilizzare gli argomenti min e massimi che mantengono il punteggio minimo o massimo per membro nel set ordinato risultante.

ZinterStore CommoniteVisitor 2 seta setb aggregato max

Come previsto, il valore massimo del punteggio per entrambi i membri è 300 ed è mantenuto nella set ordinata di destinazione.

Conclusione

In sintesi, il comando ZinterStore viene utilizzato per calcolare l'intersezione per i set ordinati multipli forniti. È in grado di estrarre l'intersezione e memorizzarlo in un nuovo set ordinato. Come accennato in precedenza, i punteggi per membro tra i set di origine sono sommati per impostazione predefinita. Gli argomenti minimi e massimi possono essere passati al comando in cui i punteggi sono aggregati dal punteggio minimo o massimo nei set di origine. Allo stesso tempo, è possibile specificare un fattore di moltiplicazione per i punteggi di ciascun elemento nel set di intersezione. Nel complesso, il comando ZinterStore è affidabile e fruttuoso nel calcolo degli incroci set.