Redis之geospatial
地理空间(geospatial)
Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增。
Redis GEO 操作方法有
- geoadd:添加地理位置的坐标。
- geopos:获取地理位置的坐标。
- geodist:计算两个位置之间的距离。
- georadius:根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。
- georadiusbymember:根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合。
- geohash:返回一个或多个位置对象的 geohash 值。
案例
- geoadd:添加地理位置
127.0.0.1:6379> GEOADD china:city 116.40 39.90 beijing
(integer) 1
127.0.0.1:6379> GEOADD china:city 121.47 31.23 shanghai
(integer) 1
127.0.0.1:6379> GEOADD china:city 106.50 29.53 chongqing
(integer) 1
- GEOPOS
127.0.0.1:6379> GEOPOS china:city beijing #获取指定城市的经度纬度
1) 1) "116.39999896287918091"
2) "39.90000009167092543"
127.0.0.1:6379> GEOPOS china:city chongqing
1) 1) "106.49999767541885376"
2) "29.52999957900659211"
127.0.0.1:6379> GEOPOS china:city xian
1) 1) "120.1600000262260437"
2) "34.25999964418929977"
- geodist
获取两个城市之间的距离
127.0.0.1:6379> geodist china:city beijing shanghai
"1067378.7564"
127.0.0.1:6379> geodist china:city beijing shanghai km #获取北京和重庆之间的距离,以KM为单位
"1067.3788"
- georadius
获取附近的人,以给定的经纬度为中心,找出某一半径内的元素
127.0.0.1:6379> georadius china:city 110 30 1000 km #以110 30为经纬度获取半径1000km之内的位置
1) "chongqing"
127.0.0.1:6379> georadius china:city 110 30 10000 km
1) "chongqing"
2) "shanghai"
3) "xian"
4) "beijing"
127.0.0.1:6379> georadius china:city 110 30 10000 km withdist #显示到中心位置的距离
1) 1) "chongqing"
2) "341.9374"
2) 1) "shanghai"
2) "1105.9098"
3) 1) "xian"
2) "1067.1103"
4) 1) "beijing"
2) "1245.2858"
127.0.0.1:6379> georadius china:city 110 30 1000 km withdist withcoord count 1 #withcoord显示它人的经度纬度
1) 1) "chongqing"
2) "341.9374"
3) 1) "106.49999767541885376"
2) "29.52999957900659211"
127.0.0.1:6379>
127.0.0.1:6379> georadius china:city 110 30 1000 km withdist withcoord count 2 #count限制显示的数量
1) 1) "chongqing"
2) "341.9374"
3) 1) "106.49999767541885376"
2) "29.52999957900659211"
127.0.0.1:6379> georadius china:city 110 30 10000 km withdist withcoord count 2
1) 1) "chongqing"
2) "341.9374"
3) 1) "106.49999767541885376"
2) "29.52999957900659211"
2) 1) "xian"
2) "1067.1103"
3) 1) "120.1600000262260437"
2) "34.25999964418929977"
- georadiusbymember
127.0.0.1:6379> georadiusbymember china:city beijing 10000 km #显示北京10000km之内的城市
1) "chongqing"
2) "shanghai"
3) "xian"
4) "beijing"
- geohash
将二维的经纬度转换为一维的字符串,如果两个字符串越接近,那么则距离越近!
127.0.0.1:6379> geohash china:city beijing chongqing
1) "wx4fbxxfke0"
2) "wm5xzrybty0"

浙公网安备 33010602011771号