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

¿Cómo combinar los conjuntos ordenados Redis?

Hay un par de formas de hacer esto, pero la correcta depende de lo que estés tratando de hacer. Por ejemplo:

  1. Puede usar ZRANGEBYSCORE (o ZREVRANGEBYSCORE) en su código para cada FEED:USER:n clave y "combinar" las respuestas en el cliente
  2. Puedes hacer ZUNIONSTORE en las claves relevantes y luego hacer ZRANGEBYSCORE en el resultado del cliente.
  3. Sin embargo, si sus "feeds" son grandes, el flujo del n.° 2 debe invertirse:primero el rango y luego la unión.
  4. También podría hacer tipos similares de procesamiento completamente del lado del servidor con algunas secuencias de comandos de Lua.

EDITAR:más aclaraciones

Re. 1:la fusión se puede realizar del lado del cliente según los resultados que obtiene de ZRANGEBYSCORE o puede usar secuencias de comandos Lua del lado del servidor para hacerlo. Use WITHSCORES para obtener la marca de tiempo y combinarla/ordenarla. Independientemente de la ubicación que elijas para ejecutar este código (probablemente usaría Lua para la ubicación de los datos), la implementación depende de ti. Lmk si necesitas ayuda con eso :)