【Redis】實現附近人功能

 

01 Redis的Geo

最近在寫實現附近人的這個功能,在網上找了不少方案,可是都不盡人意。最後發現了redis已經實現了這個功能。支持存儲地理位置信息來實現附近位置,搖一搖這類依賴於地理位置信息的功能。git

 

02 添加地理位置

 

geoadd key longitude latitude memberredis

longitude latitude member分別是該地理位置的經度,緯度,成員。性能

1572839411964255.png

上圖是添加了三個地理位置,分別是EE,Xiao,Chui這三個地理位置測試

 

03 獲取倆地的距離

geodist key member1 member2 [unit]ui

 

其中unit表明返回結果的單位,包含如下四種:rem

·m(meters)表明米。it

·km(kilometers)表明千米。class

·mi(miles)表明英里。高德地圖

·ft(feet)表明尺。im


下面操做用於計算天津到北京的距離,並以千米爲單位

 

1572839662935585.png

1572839849123068.png

上圖是使用高德地圖進行計算的,基本是吻合的

 

 

04 獲取附近的位置

georadiusbymember這裏咱們使用這個命令,這個命令的參數只須要給出成員便可。

GEORADIUSBYMEMBER  company EE 20 km count 3 asc

1572840155615830.png

這裏是獲取的EE附近20km的成員

 

05 地理位置的刪除

GEO沒有提供刪除成員的命令,可是由於GEO的底層實現是zset,因此

能夠借用zrem命令實現對地理位置信息的刪除。

zrem key member

 

這裏只是簡單地使用了這個功能下一篇文章使用大量數據來測試性能。

相關文章
相關標籤/搜索