Cada membro é empurrado para um conjunto de Redis, referenciado por uma chave que permite consultar esses itens geoespaciais com eficiência e de maneira ordenada posteriormente. Um dos melhores usos dessa estrutura de dados é que você pode consultar facilmente a distância entre duas locações geográficas (membros) usando o comando geodista introduzido por Redis. Este será um guia detalhado sobre o comando geodista, sintaxe e seus casos de uso.
Cálculo da distância
Redis usa a fórmula matemática do Haversine para calcular as distâncias para os índices geoespaciais que assumem que a terra é uma esfera perfeita. Todos sabemos que a terra não é uma esfera perfeita. Então, um 0.O erro de 5% pode ser introduzido pelo cálculo da distância. Isso pode ser ignorado para aplicativos como mídias sociais, localizadores de local nas proximidades e etc. Mas para aplicações críticas de erro, isso deve ser usado com cuidado.
O comando geodista
O comando geodista é usado para calcular a distância entre dois membros armazenados em uma determinada chave geoespacial. Este comando aceita dois parâmetros obrigatórios para membros e uma chave geoespacial (índice) que aponta para um conjunto classificado. A distância é retornada em metros (m). Opcionalmente, você também pode especificar a unidade. Ele suporta quilômetros, milhas e pés também.
A sintaxe do comando geodista é a seguinte:
Geodista geoespacial_index/key membro_1 membro_2 [m | Km | Ft | MI]
Retorna a distância como um valor duplo. O valor depende da unidade que você especificou. Sempre que o comando encontra membros inexistentes ou desaparecidos, ele retorna nulo.
Caso de uso - obtenha a distância entre duas atrações
Vamos supor que uma empresa turística introduzisse um aplicativo móvel para encontrar os detalhes das atrações em um determinado país. O aplicativo móvel usa o Redis Data Store em seu back -end para armazenar os detalhes das atrações, incluindo suas coordenadas geoespaciais.
Eles têm usado o Redis Hashes para armazenar as informações básicas relacionadas às atrações. Para a parte da coordenada de geolocalização, eles estão usando a estrutura de dados geoespaciais de Redis.
Vamos criar um novo índice geoespacial que contém dois membros.
Atrações Geoadd: NewYork 23.596920 67.104923 "Lazy Mountain" 134.694013 45.394022 "Rio Sabra"
Agora o "montanha preguiçosa" e "Rio Sabra”Os membros devem ser armazenados em um conjunto classificado que é referenciado pela chave Atrações: NewYork.
Vamos usar o comando geodista para calcular a distância entre os dois membros acima. Por padrão, ele deve retornar a distância nos medidores.
Atrações geodistas: Newyork "Lazy Mountain" "Sabra River"
Como você pode ver, especificamos o índice geoespacial como Atrações: NewYork. Em seguida, temos os dois membros como cordas.
Como esperado, a saída é retornada em metros. O tipo de dados duplo foi usado para representar a distância.
Recuperar a distância em quilômetros
É possível recuperar a distância acima em quilômetros também. Você só precisa passar o argumento opcional 'km' do seguinte modo:
Atrações geodistas: Newyork "Lazy Mountain" "Sabra River" KM
Saída
Recuperar a distância em milhas
O argumento do 'mi' deve ser especificado para calcular a distância entre os membros dados em milhas.
Atrações geodistas: Newyork "Lazy Mountain" "Sabra River" Mi
Saída
Recuperar a distância nos pés
Sempre que você precisar saber o número de pés de um membro para outro, basta especificar a unidade como 'ft'.
Atrações geodistas: Newyork "Lazy Mountain" "Sabra River" Ft
Saída
Sempre que você especificar membros inexistentes, o comando geodista deve retornar nulo. Vamos especificar dois membros inexistentes da seguinte forma:
Atrações geodistas: NewYork "Lazy" "Sabra"
Saída
Se a chave especificada não existir, o comando retornará nulo.
Atrações geodistas: Washington "Lazy Mountain" "Sabra River" Ft
No exemplo acima, o Atrações: Washington A chave não está disponível. Portanto, a saída é nula como mostrado no seguinte:
Conclusão
Em resumo, o tipo de dados geoespacial de Redis foi introduzido para manter coordenadas de locações geográficas. Como mencionado, os valores de longitude e latitude são armazenados para um determinado membro. Isso é representado como um conjunto classificado na memória. Vários comandos estão disponíveis para operar em tipos de dados geoespaciais. O geodista é um dos comandos úteis que operam em índices geoespaciais para retornar a distância entre os membros especificados. Conforme discutido na seção Introdução, a distância é retornada em metros por padrão. O comando geodista aceita argumentos opcionais para retornar a distância em outras unidades, como quilômetros, pés e milhas.