Redis
 sql >> Database >  >> NoSQL >> Redis

Redis:come intersecare un set normale con un set ordinato?

C'è una soluzione semplice al tuo problema:ZINTERSTORE funzionerà con un SET e un ZSET . Prova:

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"

Modifica: Ho aggiunto AGGREGATE MAX sopra, poiché redis darà a ogni membro del set (non ordinato) foo un punteggio predefinito di 1 e SUM che con qualsiasi punteggio abbia nel set (ordinato) bar .