Sobes.tech
Back to questions
Junior — Middle
64

Как были организованы и какие форматы использовались для хранения географических данных в Redis в вашем предыдущем проекте?

Companies where asked
Медиалогия

Answer from AI

sobes.tech AI

В Redis для хранения географических данных используется специальный тип данных — геопространственные индексы, реализованные через команды GEOADD, GEORADIUS, GEOPOS и другие.

Данные хранятся в виде координат (широта, долгота) с привязкой к ключу и имени объекта. Формат хранения — внутренний сжатый индекс, основанный на геохешах, что позволяет быстро выполнять запросы по радиусу или расстоянию.

Пример использования в C# с библиотекой StackExchange.Redis:

var redis = ConnectionMultiplexer.Connect("localhost");
var db = redis.GetDatabase();

// Добавление гео-точки
// GEOADD locations 13.361389 38.115556 "Palermo"
db.GeoAdd("locations", 13.361389, 38.115556, "Palermo");

// Поиск объектов в радиусе 100 км от точки
var nearby = db.GeoRadius("locations", 15, 37, 100, GeoUnit.Kilometers);

Таким образом, геоданные хранятся компактно и позволяют эффективно выполнять пространственные запросы.