Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Set

Utilizzare le operazioni di base supportate dal DBMS NoSQL Redis, finalizzate alla gestione di insiemi (o set) di dati non ordinati.
Utilizzare le operazioni di base supportate dal DBMS NoSQL Redis, finalizzate alla gestione di insiemi (o set) di dati non ordinati.
Link copiato negli appunti

Gli insiemi (o set) offerti da Redis permettono di gestire collezioni di dati che non memorizzano la posizione
degli elementi come le liste e non ammettono duplicati. In questa lezione vedremo le funzioni che li riguardano dividendole
in due macrocategorie: quelle che servono a gestirne gli elementi e quelle che permettono di svolgere
le operazioni fondamentali tra insiemi (unione, differenza e intersezione).

Operazioni sugli elementi

Per lavorare ad un insieme dobbiamo per prima cosa inserirvi degli elementi. Ne creiamo uno che risponde alla chiave
allievi_java, contenente stringhe composte da nomi e cognomi di singoli studenti iscritti ad un corso di programmazione
Java. A tal fine, usiamo la funzione SADD:

> SADD allievi_java "Rossi Carlo" "Verdi Enea" "Bianchi Silvia" "Verdi Roberta" "Neri Alessia" "Gialli Silvia" "Azzurri Simone" "Rossi Daniele"
(integer) 8

Abbiamo così popolato l'insieme con otto elementi e, come si può vedere, Redis ci informa subito della dimensione raggiunta
dalla struttura dati. Con la funzione SMEMBERS possiamo ottenere un elenco dei membri dell'insieme:

> SMEMBERS allievi_java
1) "Gialli Silvia"
2) "Verdi Enea"
3) "Azzurri Simone"
4) "Rossi Daniele"
5) "Rossi Carlo"
6) "Bianchi Silvia"
7) "Verdi Roberta"
8) "Neri Alessia"

e con la funzione SCARD possiamo inoltre richiedere la dimensione dell'insieme:

> SCARD allievi_java
(integer) 8

A dimostrazione della non ammissibilità di duplicati, proviamo ad inserire un nuovo elemento identico ad un membro
dell'insieme. L'operazione sarà rifiutata, e ci verrà risposto che sono stati effettuati 0 inserimenti:

> SADD allievi_java "Verdi Roberta"
(integer) 0

Possiamo verificare la presenza di elementi all'interno dell'insieme con la funzione SISMEMBER.
Se il risultato è 1, significa che la ricerca ha dato esisto positivo; altrimenti, il risultato sarà 0:

> SISMEMBER allievi_java "Rossi Roberto"
(integer) 0
> SISMEMBER allievi_java "Rossi Carlo"
(integer) 1

Per eliminare elementi dall'insieme possiamo usare SREM. Non avremo a disposizione informazioni come la posizione degli elementi, e pertanto dobbiamo fornire il valore del membro che vogliamo eliminare. Anche in questo caso un risultato pari a 0 significherà che l'operazione non è riuscita, mentre in caso contrario indicherà che l'elemento è stato cancellato.

> SREM allievi_java "Azzurri Simone"
integer) 1
> SREM allievi_java "Azzurri Simone"
(integer) 0

Operazioni tra insiemi

Possiamo svolgere operazioni definite tra più insiemi, quali unione, intersezione e differenza.
Per sperimentarle, creiamo un altro insieme che raccolga allievi per un corso di Linux, alcuni dei quali frequentano anche
il corso di Java:

> SADD allievi_linux "Rossi Carlo" "Verdi Enea" "Verdi Roberta" "Neri Alessia" "Marroni Rocco" "Azzurri Carlotta" "Neri Armando"

Con la funzione SDIFF effettuiamo la differenza tra due insiemi. In questo caso, quindi, possiamo trovare tutti gli allievi che sono presenti solo in un corso:

> SDIFF allievi_java allievi_linux
1) "Rossi Daniele"
2) "Gialli Silvia"
3) "Azzurri Simone"
4) "Bianchi Silvia"

Con l'operazione di intersezione, SINTER, otteniamo invece l'elenco di tutti quelli che sono iscritti sia al corso di Java sia di Linux:

> SINTER allievi_java allievi_linux
1) "Neri Alessia"
2) "Rossi Carlo"
3) "Verdi Roberta"
4) "Verdi Enea"

Infine se volessimo consultare l'elenco completo degli allievi di entrambi i corsi, senza ripetizioni, potremmo
usare l'unione (SUNION):

> SUNION allievi_java allievi_linux
 1) "Neri Alessia"
 2) "Rossi Carlo"
 3) "Rossi Daniele"
 4) "Gialli Silvia"
 5) "Verdi Roberta"
 6) "Neri Armando"
 7) "Marroni Rocco"
 8) "Azzurri Carlotta"
 9) "Bianchi Silvia"
10) "Azzurri Simone"
11) "Verdi Enea"

Tali funzioni restituiscono il risultato ma non lo immagazzinano da nessuna parte. Esistono altrettante versioni che svolgono
questa operazione aggiuntiva: SDIFFSTORE, SINTERSTORE, SUNIONSTORE.
Il loro funzionamento sarà identico a quanto visto in questo paragrafo ma dovremo specificare anche l'insieme destinazione del risultato.


Ti consigliamo anche