Redis
 sql >> Base de données >  >> NoSQL >> Redis

Redis :Comment intersecter un ensemble normal avec un ensemble trié ?

Il existe une solution simple à votre problème :ZINTERSTORE fonctionnera avec un SET et un ZSET . Essayez :

redis> sadd foo a
(integer) 1
redis> zadd bar 1 a
(integer) 1
redis> zadd bar 2 b
(integer) 1
redis> zinterstore baz 2 foo bar AGGREGATE MAX
(integer) 1
redis> zrange baz 0 -1 withscores
1) "a"
2) "1"

Modifier : J'ai ajouté AGGREGATE MAX ci-dessus, puisque redis donnera à chaque membre de l'ensemble (non trié) foo un score par défaut de 1 , et SUM qu'avec le score qu'il a dans l'ensemble (trié) bar .