SINTER / SUNION / SDIFF în Redis & In-Memory Data Store

Comenzi pentru seturi Redis 1.0.0

Operații cu mulțimi între seturi: intersecție (SINTER), reuniune (SUNION) și diferență (SDIFF).

Sintaxă comandă
SINTER key [key ...]
SUNION key [key ...]
SDIFF key [key ...]
SINTERSTORE destination key [key ...]
SINTERCARD numkeys key [key ...] [LIMIT limit]

Ce face SINTER / SUNION / SDIFF

SINTER întoarce membrii comuni tuturor seturilor, SUNION toți membrii din oricare set, iar SDIFF membrii din primul set care nu apar în celelalte.

Variantele SINTERSTORE, SUNIONSTORE și SDIFFSTORE salvează rezultatul într-o cheie nouă și întorc numărul de membri. SINTERCARD (Redis 7.0+) întoarce doar câți membri comuni există, cu o limită opțională, fără să trimită membrii.

Parametri

Parametru Descriere
key ... Seturile implicate (la SDIFF, primul este cel din care se scade).
destination Cheia unde se salvează rezultatul (variantele *STORE).
numkeys Numărul de seturi (la SINTERCARD).
LIMIT limit SINTERCARD se oprește când a numărat atâția membri.

Ce returnează

SINTER/SUNION/SDIFF: lista membrilor rezultați. Variantele *STORE și SINTERCARD: un (integer).

Exemple

Exemplul 1: Prieteni comuni

Ana și Dan au în comun doar pe Ioana.

SADD prieteni:ana ioana mihai elena
SADD prieteni:dan ioana radu
SINTER prieteni:ana prieteni:dan
SINTERCARD 2 prieteni:ana prieteni:dan

Ieșire în redis-cli

127.0.0.1:6379> SADD prieteni:ana ioana mihai elena
(integer) 3
127.0.0.1:6379> SADD prieteni:dan ioana radu
(integer) 2
127.0.0.1:6379> SINTER prieteni:ana prieteni:dan
1) "ioana"
127.0.0.1:6379> SINTERCARD 2 prieteni:ana prieteni:dan
(integer) 1

Exemplul 2: Recomandări: prietenii lui Dan pe care Ana nu-i are

SDIFF ține cont de ordine: din primul set se scad celelalte.

SDIFF prieteni:dan prieteni:ana
SUNIONSTORE prieteni:toti prieteni:ana prieteni:dan

Ieșire în redis-cli

127.0.0.1:6379> SDIFF prieteni:dan prieteni:ana
1) "radu"
127.0.0.1:6379> SUNIONSTORE prieteni:toti prieteni:ana prieteni:dan
(integer) 4

Greșeli frecvente

  • SDIFF a b nu este același lucru cu SDIFF b a.
  • Pe seturi foarte mari, intersecțiile și reuniunile pot dura mult; pentru rezultate folosite des, salvează-le cu *STORE și pune o expirare.
  • În Redis Cluster toate seturile trebuie să fie în același hash slot.

Comenzi înrudite

  • SADD: Adaugă unul sau mai mulți membri într-un set (colecție fără duplicate); membrii existenți sunt ignorați.
  • SMEMBERS: Întoarce toți membrii unui set, fără o ordine garantată.
  • SCARD: Întoarce numărul de membri dintr-un set (cardinalitatea); 0 dacă setul nu există.