GEOADD key longitude latitude member
добавляет запись (member
с longitude
и latitude
) к отсортированному набору key
, геопространственному индексу. Сортированный создается, если он не существует.
Чтобы иметь возможность запрашивать события в пределах некоторого радиуса, вы хотите, чтобы все ваши события были в одном и том же геопространственном отсортированном наборе.
Это означает, что вы добавляете все к одному и тому же ключу, используя:
GEOADD events:location {event.longitude} {event.latitude} {event.id}
Вы можете добавить более одного события за раз:
GEOADD events:location 13.361389 38.115556 "event:1" 15.087269 37.502669 "event:2"
Примечание долгота идет первой
Затем вы получаете все события рядом с определенным пользователем местоположением, используя GEORADIUS
> GEORADIUS events:location 15 37 200 km WITHDIST
1) 1) "event:1"
2) "190.4424"
2) 1) "event:2"
2) "56.4413"
Другие доступные команды:
GEODIST
- расстояние между двумя элементами GEOHASH
- Geoha sh строк, представляющих позицию GEOPOS
- позиции (долгота, широта) всех указанных членов GEORADIUSBYMEMBER
- как GEORADIUS
, но принимает имя члена уже существует внутри геопространственного индекса
Вы также можете использовать отсортированные команды set в геопространственном индексе. Например, чтобы узнать, сколько событий у вас есть в геопространственном индексе:
> ZCARD events:location
(integer) 2
Вы можете использовать ваше целое JSON кодированное событие в качестве члена геопространственного индекса или просто event:id
, который также является ключом к другому ключу с данными события, ваш звонок.