php redis 根据经纬度 计算当前用户附近店铺信息
1.redis 版本:Redis 在 3.2 版本以后增加了地理位置 GEO 模块,意味着我们可以使用 Redis 来实现摩拜单车「附近的 Mobike」、美团和饿了么「附近的餐馆」这样的功能了
2.Redis GEO实现主要包含了以下两项技术:
2.1、使用geohash保存地理位置的坐标。
2.2、使用有序集合(zset)保存地理位置的集合。
3.gaoadd 添加 经纬度 到 数据集
redis> GEOADD redis_key 经度1 纬度1 "位置名称1" 经度2 纬度2 "位置名称2"
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
4.php 批量插入数据集
//伪数据
$data = [
[
'lng' => '116.1021',
'lat' => '39.5928',
'name'=> '阿里小贩'
],
[
'lng' => '112.5607',
'lat' => '34.2331',
'name'=> '腾讯小贩'
]
];
$obj = new Redis();
$obj->connect('127.0.0.1', '6379');
$redis_key = "redis:test:2020":
$obj->pipeline();
foreach ($data as $k => value) {
$obj->geoadd($redis_key,$value['lng'],$value['lat'],$value['name']);
}
$obj->->exec();
5.php 获取用户:lng:116.514202 lat:39.90540 附近20km 的商户
$list = $obj->georadius($redis_key,116.514202,39.90540,20,'km');
参考:1:https://www.cnblogs.com/wt645631686/p/8454497.html