Redis geo:基于地理位置保存和搜索操作简单总结:
geoadd命令:将给定的位置(经度、维度)以某个名字(name)保存到key为xxx的zset集合中;
例如:将 上海 的地理位置(经度:121.473658,维度:31.230378)保存在key为city:location的zset中,命令如
下:
参数: key:zset集合的名称,
lon: 保存的位置的经度,
lat : 保存的位置的维度,
name : 保存的位置的名称
geoadd city:location 116.427341 39.902842 北京,
geoadd city:location 121.473658 31.230378 上海,
geoadd city:location 113.264385 23.129112 ⼴州
geoadd city:location 114.058975 22.543754 深圳
geoadd city:location 120.209947 30.245853 杭州
geoadd city:location 114.305215 30.592935 武汉

georadius命令:以给定的的地理位置(经度、维度)搜索位置在当前给定位置为中⼼,半径为给定的radius范围
内的所有位置集合;
备注: 类似于sql中的范围查询
例如:以陆家嘴的位置(经度:121.5025,维度:31.237015)为中⼼,搜索半径radius为5km,返回key为
city:location的zset中所有在搜索范围内的地理位置信息,
参数:key:zset集合的名称,
lon:中⼼位置经度
lat:中⼼位置维度,
radius:搜索半径,
km|m等:搜索半径的单位,
withdist: 返回搜索结果中的位置离当前中⼼位置的距离,单位和给定搜索半径的单位相同
withcoord: 返回搜索结果中位置的经纬度,
withhash: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值,
asc: 返回结果按距离中⼼位置由近到远排序,
desc: 返回结果按距离中⼼位置由远到近排序,
count [n] : 只保留结果中前n个(n必为必须⼤于0的正整数)备注:相当于sql查询中最后的limit关键字;
命令如下:
georadius city:location 121.5025 31.237015 5 km withdist withcoord withhash asc count 1