Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Redis:Como cruzar um conjunto normal com um conjunto ordenado?


Existe uma solução simples para o seu problema:ZINTERSTORE funcionará com um SET e um ZSET . Experimentar:
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"

Editar: Adicionei AGGREGATE MAX acima, já que redis dará a cada membro do conjunto (não classificado) foo uma pontuação padrão de 1 e SUM que com qualquer pontuação que tenha no conjunto (classificado) bar .