Redis: Wie schneide ich eine "normale" Menge mit einer sortierten Menge?

Angenommen, ich habe eine Menge (oder sortierte Menge oder Liste, wenn das besser wäre)A von 100 bis 1000 Saiten.

Dann habe ich einen sortierten SatzB von vielen weiteren Saiten, sagen wir eine Million.

JetztC sollte der Schnittpunkt von seinA undB (von den Saiten natürlich).

Ich möchte jedes Tupel (X, SCORE_OF_X_IN_B) haben, in dem sich X befindetC.

Irgendeine Idee?

Ich habe zwei Ideen:

Interstorestore A ein sortierter Satz mit jeder Punktzahl von 0interstore zu Dnimm jeden Gegenstand von Dlöschen DEinfache Schleife im ClientSchleife über A in meinem Client-ProgrammHolen Sie sich Zscore für jede Zeichenfolge

Während 1. auf der Redis-Seite viel zu viel Overhead hat (muss zum Beispiel schreiben. Die Redis-Seite gibt auch eine recht hohe zeitliche Komplexität anhttp://redis.io/commands/zinterstore), 2. hätte | A | Datenbankverbindungen und wird keine gute Wahl sein.

Vielleicht könnte ich ein Redis / Lua-Skript schreiben, das wie Zscore funktioniert, aber mit einer beliebigen Anzahl von Zeichenfolgen, aber ich bin nicht sicher, ob mein Hoster Skripte zulässt ...

Also wollte ich SO nur fragen, ob es eine elegante und schnelle Lösung ohne Scripting gibt!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage