sql >> Base de Datos >  >> NoSQL >> Redis

Redis:¿Cómo cruzar un conjunto normal con un conjunto ordenado?

Hay una solución simple a su problema:ZINTERSTORE funcionará con un SET y un ZSET . Prueba:

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: Agregué AGGREGATE MAX anterior, ya que redis le dará a cada miembro del conjunto (no ordenado) foo una puntuación predeterminada de 1 y SUM que con cualquier puntaje que tenga en el conjunto (ordenado) bar .