Można to zrobić na kilka sposobów, ale właściwy zależy od tego, co chcesz zrobić. Na przykład:
- Możesz użyć ZRANGEBYSCORE (lub ZREVRANGEBYSCORE) w swoim kodzie dla każdego
FEED:USER:n
klucz i "scal" odpowiedzi w kliencie - Możesz zrobić ZUNIONSTORE na odpowiednich kluczach, a następnie wykonać ZRANGEBYSCORE na wyniku z klienta.
- Jeśli jednak Twoje „pliki” są duże, przepływ nr 2 powinien zostać odwrócony – najpierw zakres, a potem suma.
- Możesz również wykonać podobne typy przetwarzania całkowicie po stronie serwera z niektórymi skryptami Lua.
EDYCJA:dalsze wyjaśnienia
Odnośnie. 1 - Scalanie można wykonać po stronie klienta na wynikach uzyskanych z ZRANGEBYSCORE lub można to zrobić za pomocą skryptów Lua po stronie serwera. Użyj funkcji WITHSCORES, aby uzyskać sygnaturę czasową i scalić/sortować na niej. Bez względu na wybraną przez Ciebie lokalizację do uruchomienia tego kodu (prawdopodobnie użyłbym Lua do lokalizacji danych), implementacja zależy od Ciebie - lmk, jeśli potrzebujesz w tym pomocy :)