Redis Geodist

Redis Geodist
Redis começa a suportar tipos de dados geoespaciais da versão 3.2.0. Este é um dos recursos exclusivos que o Redis oferece em outras lojas de dados. A estrutura de dados geoespaciais pode manter coordenadas de um determinado local. Com o rico conjunto de operações, é possível consultar locais e suas coordenadas com base em diferentes critérios.

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.