2

Redis を php とそのライブラリphpredisで使用しています。

私は次の構造を持っています:

city:1 {
 lat->14.02,
 lon->10.00,
 hash->sp2f1h60w5j
}

city:2 {
 lat->14.03,
 lon->10.1,
 hash->sp2f1h60w5m
}

しかし、ハッシュで検索する方法が見つかりませんでした。たとえば、まったく同じハッシュまたはほぼ同じハッシュを検索したいと思います。構造を変更する必要がありますか?

ありがとう。

4

3 に答える 3

4

このスレッドからの Josiah Carlson のアドバイスに従い、ハッシュを数値に変換し、それをソート済みセットのスコアとして使用できます。このようなもの:

city:1 {
 lat->14.02,
 lon->10.00,
 hash->sp2f1h60w5j
}

city:2 {
 lat->14.03,
 lon->10.1,
 hash->sp2f1h60w5m
}

ジオハッシュを数値として使用するには、特定の文字マップを使用して base 32 からデコードする必要があります。ウィキペディアの Geohash を参照してください。以下の例の番号を使用します。

cities { (1, 4711), (2, 4712) }

zrangebyscoreを使用して、エリア内の都市を検索できるようになりました。

zrangebyscore cities 4000 5000
于 2012-08-14T16:00:53.237 に答える
1

要素を取得するために redis でキーを使用しない理由。

お気に入り:

都市-sp2f1h60w5j = 1

都市-sp2f1h60w5m = 2

次に、クローゼットが必要な場合: 「キー」で取得: city-sp2f1h60w* キーの「配列」を返す場合... または都市 ID。正確な戻りデータを思い出せません。

乾杯

于 2014-11-26T16:30:37.690 に答える
0

特定のポイントの近くにあるすべてのアイテムを検索しますか? 完全一致またはほぼ一致を探しているので、そうであると思います。Redis は昨日、まったく新しい Geo 機能をリリースしました ( http://redis.io/commands#geo )。

GeoRadius と GeoRadiusByMember は、探しているものです。

于 2016-05-08T11:22:27.453 に答える