利用 redis
实现附近的人功能,主要使用的是 redis
的 geo
数据类型,需要注意的是 redis
的版本。
软件和环境
centOS7, Redis4, phpredis3.1.4, PHP7
PHP的扩展我使用的是 phpredis
,如果你使用的是 predis
的话,请自行查找 api 文档,基本操作方法相似。
连接redis
1 | $redis = new Redis(); |
记录用户定位信息
我这里主要用 user:{id} 来做标记记录坐标信息1
2
3$redis->geoAdd("users", 116.365, 39.976, "user:1");
$redis->geoAdd("users", 116.366, 39.975, "user:2");
$redis->geoAdd("users", 116.364, 39.977, "user:3");
搜索附近的人
使用自己的坐标来搜索周边固定位置的用户1
2
3// 搜索附近 5km 的用户,并且返回距离
$options = ['WITHDIST'];
$lists = $redis->geoRadius('users', 116.36, 39.96, 5, 'km', $options);
获取用户列表
根据上述获取的列表,可以将其进行分页展示。具体可以找 phpredis
文档 阅读详情。
我这里只是讲解了一个大概的思路,在具体的业务逻辑中,做具体的处理。
©版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 & 作者信息。
Happy Coding