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

Como combinar os conjuntos classificados Redis?


Existem algumas maneiras de fazer isso, mas a correta depende do que você está tentando fazer. Por exemplo:
  1. Você pode usar ZRANGEBYSCORE (ou ZREVRANGEBYSCORE) em seu código para cada FEED:USER:n key e "mesclar" as respostas no cliente
  2. Você pode fazer um ZUNIONSTORE nas chaves relevantes e depois fazer o ZRANGEBYSCORE no resultado do cliente.
  3. No entanto, se seus "feeds" forem grandes, o fluxo do número 2 deverá ser revertido - primeiro intervalo e depois união.
  4. Você também pode fazer tipos semelhantes de processamento inteiramente no lado do servidor com alguns scripts Lua.

EDIT:mais esclarecimentos

Ré. 1 - A mesclagem pode ser feita do lado do cliente nos resultados que você obtém do ZRANGEBYSCORE ou você pode usar scripts Lua do lado do servidor para fazer isso. Use o WITHSCORES para obter o timestamp e mesclar/classificar nele. Independentemente da sua escolha de local para executar este código (eu provavelmente usaria Lua para localidade de dados), a implementação depende de você - lmk se precisar de ajuda com isso :)