2017-12-14 5 views
1

Ich suche Redis 'GEORADIUS Befehl zu verwenden.Redis GREORADIUS: Höhe einschließen?

Dieser Befehl sucht jedoch nur im Bereich eines zweidimensionalen Kreises um eine gegebene Länge und Breite. Ich muss auch mit einer Höhe suchen und so Ergebnisse im Bereich einer dreidimensionalen Sphäre finden.

Wie würde ich dies in Redis erreichen?

Antwort

4

Ich glaube, was Sie eigentlich versuchen, ist in einem 3D-Zylinder (oder eine Art Kegel, wenn Sie die sphärische Natur der Erde berücksichtigen) zu suchen.

Eine Höhensuche ist nicht in den Geospatial-Indizes von Redis enthalten, aber Sie können diese Eigenschaft in einem eigenen Sorted Set als Score speichern. Dann können Sie eine Bereichssuche (ZRANGEBYSCORE) auf der Höhe durchführen und (ZINTER) die Ergebnisse mit denen aus der Radiusabfrage schneiden (Hinweis: verwenden Sie einen temporären Schlüssel zu STORE Ergebnissen).

Zu Ihrer Information, dies ist der Ansatz, den ich mit der xyzsets in geo.lua gemacht habe.

+0

Oh ok ja, ich denke ein Zylinder beschreibt den Suchbereich besser –