Redis 实现附近的人

利用 redis 实现附近的人功能,主要使用的是 redisgeo 数据类型,需要注意的是 redis 的版本。

软件和环境
centOS7, Redis4, phpredis3.1.4, PHP7

PHP的扩展我使用的是 phpredis ,如果你使用的是 predis 的话,请自行查找 api 文档,基本操作方法相似。

连接redis

1
2
3
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// 如果有密码的话,使用 auth

记录用户定位信息

我这里主要用 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

坚持原创技术分享,您的支持将鼓励我继续创作!
Flyertutor WeChat Pay

WeChat Pay

Flyertutor Alipay

Alipay