Redis GEO 使用
Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增。
Redis GEO 操作方法有:
- geoadd:添加地理位置的坐标。
- geopos:获取地理位置的坐标。
- geodist:计算两个位置之间的距离。
- georadius:根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。
- georadiusbymember:根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合。
- geohash:返回一个或多个位置对象的 geohash 值。
代码示例:
$key = 'city';
$allCity = [
['109.22', '32.51', '陕西安康'],
['114.109', '22.544', '广东深圳'],
['114.279', '30.573', '湖北武汉'],
['114.498', '38.042', '河北石家庄'],
[113.63142 , 34.75344 , '河南省郑州'],
[114.89257 , 40.77324, '河北省张家口'],
[116.10760 , 39.94615 , '北京市门头沟'],
['116.41338', '39.91092', '北京市东城区'],
[116.66341 , 39.91602 , '北京市通州区'],
[116.44956 , 39.92637, '北京市朝阳区'],
];
foreach ($allCity as $val) {
//添加的全部城市信息
//$r = Redis::geoadd($key, $val['0'], $val['1'], $val['2']);
}
//我现在在河北燕郊,坐标是116.81607 , 39.95089,查询以我为圆心,周围250千米的城市名称
dump(Redis::georadius($key, 116.81607 , 39.95089 , '250', 'km'));
//返回城市名称和经纬度
dump(Redis::georadius($key, 116.81607 , 39.95089 , '250', 'km', ['WITHCOORD']));
//只想返回1个城市,相当于SQL limit 1,加个参数COUNT就行
dump(Redis::georadius($key, 116.81607 , 39.95089 , '250', 'km', ['WITHCOORD','COUNT' => 1]));
//但是我不知道我和他们的距离,加个参数WITHDIST就知道了
dump(Redis::georadius($key, 116.81607 , 39.95089 , '250', 'km', ['WITHDIST']));
//按距离排序
dump(Redis::georadius($key, 116.81607 , 39.95089 , '250', 'km', ['WITHDIST','ASC']));
//把返回城市名称、经纬度、距离,按照距离升序排序
dump(Redis::georadius($key, 116.81607 , 39.95089 , '250', 'km', ['WITHCOORD','WITHDIST','ASC']));
//把返回城市名称、经纬度、距离,按照距离降序排序
dump(Redis::georadius($key, 116.81607 , 39.95089 , '250', 'km', ['WITHCOORD','WITHDIST','DESC']));
//指定以指定范围为中心查询,我们还能以redis中的成员为中心查询
dump(Redis::georadiusbymember($key,'北京市朝阳区','1000','km'));
//查询下北京市东城区的经纬度
$location = Redis::geopos($key, '北京市东城区');
dump($location);
//查询广东深圳的经纬度hash,,hash方便查询和储存
$hash = Redis::geohash($key, '广东深圳');
dump($hash);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异