Redis: Jak przeciąć „normalny” zestaw z posortowanym zestawem?
Załóżmy, że mam zestaw (lub posortowany zestaw lub listę, jeśli byłoby lepiej)A od 100 do 1000 ciągów.
Potem mam posortowany zestawB o wiele więcej strun, powiedzmy milion.
TerazC powinien być przecięciemA iB (oczywiście ze strun).
Chcę mieć każdą krotkę (X, SCORE_OF_X_IN_B), w której znajduje się X.C.
Dowolny pomysł?
Mam dwa pomysły:
Interstorezapisz A posortowany zestaw z każdym wynikiem 0interstore do Dzdobądź każdy element Dusuń DProsta pętla w klienciezapętlić A w moim programie klienckimpobierz zscore dla każdego łańcuchaPodczas gdy 1. ma zbyt wiele narzutów po stronie redis (musi na przykład pisać. Strona redis również dość złożona czasowohttp://redis.io/commands/zinterstore), 2. miałby | A | połączenia z bazą danych i nie będzie dobrym wyborem.
Może mógłbym napisać skrypt redis / lua, który będzie działał jak zscore, ale z dowolną liczbą ciągów, ale nie jestem pewien, czy mój host zezwala na skrypty ...
Chciałem tylko zapytać, czy istnieje eleganckie i szybkie rozwiązanie bez skryptów!