Comment utiliser Redis et géo recherche de proximité, de trouver deux utilisateurs au même endroit?

Je veux mettre en œuvre un service qui, compte tenu des utilisateurs geo coordonnées, peuvent détecter si deux utilisateurs sont dans le même emplacement en temps réel.

Pour ce faire, en temps réel et à grande échelle, et il semble que je devrais aller avec un en mémoire distribuée de la banque de données comme le Redis. J'ai fait des recherches à l'aide de geohashing, mais le problème est que les points proches les uns des autres peuvent ne partagent pas toujours le même hachage préfixe. Et geohashing peut-être exagéré car je cherche à savoir si les deux utilisateurs sont assez proches où ils sont debout à côté les uns des autres.

La solution la plus simple est, bien sûr, juste pour tester si les paires de geo coordonnées de l'automne dans une petite distance les uns des autres. Mais autant que je sache, Redis et d'autres en mémoire datastorse n'ont pas d'indexation géospatiales pour soutenir ce genre de look-up.

Quelle est la meilleure façon d'aller sur la mise en œuvre de cette?

  • Autant que j'aime le redis, je pense que la meilleure option est d'utiliser quelque chose d'autre de cette recherche. Il existe plusieurs outils là-bas qui ne supportent indexation géospatiales, y compris elasticsearch, mongodb, et PostgreSQL (avec PostGIS). Même MySQL supporte les SIG extensions. L'ensemble de ces serait mieux que le redis dans ce cas d'utilisation particulier.
  • Mais qui sont ces outils assez rapide pour faire le look en temps réel? Je veux quelque chose qui peut effectuer la recherche presque instantanément.
  • Lorsqu'il est correctement configuré et indexé toutes les solutions mentionnées fournir des quasi-instantanée de recherche. Elasticsearch est très très rapide et a un support intégré pour la mise en cluster, permettant de s'adapter à des charges incroyables sans trop d'effort.
  • Oui, mais sont celles qui conviennent pour un système en temps réel? Quelle est la vitesse de l'écriture, si elle a besoin d'aller sur le disque et l'index de l'entrée? C'est pourquoi je cherchais à en mémoire des solutions pour les écritures rapides.
  • En fait ElasticSearch ne prend pas en charge les recherches de proximité pour les distances inférieures à 1 km. Voir le post original.
  • Oui, ils sont adaptés pour cette tâche
  • J'ai besoin d'une recherche de proximité, qui peut trouver des points de moins que le < 1 km de l'établissement. Je veux détecter si deux utilisateurs sont au même endroit. ElasticSearch ne prend pas en charge les recherches de proximité pour les distances inférieures à 1 km. Voir le post original.
  • Il prend en charge les recherches de proximité à moins de 1km. La syntaxe est un peu difficile. Vous devez utiliser 0,2 km de représenter 200m. Je n'ai pas tenté quelque chose en dessous de 100m si.

InformationsquelleAutor Simian | 2013-10-01