资讯专栏INFORMATION COLUMN

使用redis—geo api实现搜索附近的人,自己写的一个composer包

mating / 2808人阅读

摘要:地址安装需要使用,安装中国镜像如果是应用在项目当中的话找到根目录,需要和同级基本操作初始化添加在集合中新加一个坐标结构是或者返回删除删除集合中指定元素默认存在集合,可以指定返回或如果是指定的集合名就用坐标查询附近的单位查询范围内元素

git地址

安装

需要使用composer,安装composer, composer中国镜像

如果是应用在项目当中的话找到根目录,需要和 composer.json同级

composer require gaopengfei/redis_lbs
基本操作 初始化
require_once __DIR__."/vendor/autoload.php";
$lbs = new LBSServicesLBSService();
添加
$add_params = [
    [
        "name" => "yabao_road",
        "long" => "116.43620200729366",
        "lat" => "39.916880160714435"
    ],
    [
        "name" => "jianguomen",
        "long" => "116.4356870231628",
        "lat" => "39.908560377800676"
    ],
    [
        "name" => "chaoyangmen",
        "long" => "116.4345336732864",
        "lat" => "39.924466658329585"
    ],
    [
        "name" => "galaxy_soho",
        "long" => "116.4335788068771",
        "lat" => "39.921372916981106"
    ],
    [
        "name" => "cofco",
        "long" => "116.43564410781856",
        "lat" => "39.92024564137184"
    ],
    [
        "name" => "fesco",
        "long" => "116.435182767868",
        "lat" => "39.91811857809279"
    ],


];
/**
 * 在集合中新加一个坐标
 * @param array $params
 *  结构是 ["name"=>"xxx","long"=>"1.2321","lat"=>"1.3112"]或者[["name"=>"xxx","long"=>"1.2321","lat"=>"1.3112"]]
 * @param null $key
 * @return int
 */
$res = $lbs->add($add_params);

返回
int 6
删除
/**
 * 删除集合中指定元素
 * @param $name
 * @param null $key  默认存在集合,可以指定
 * @return int
 */
$res = $lbs->del("gao1");

返回
int 0 或 1


如果是指定的集合名就
$res = $lbs->del("gao1","set-name");
用坐标查询附近的单位
/**
 * 查询范围内元素,如果不转 key就用默认的
 * @param $long     经度
 * @param $lat      纬度
 * @param $radius   范围
 * @param $unit     单位  (仅支持 m,km,ft,mi)
 * @param null $key 集合名
 * @return mixed
 */
$search = $lbs->search("116.435182767868","39.91811857809279",500,"m");

返回数组
array:4 [▼
  0 => array:2 [▼
    "name" => "fesco"
    "dist" => "0.1250"
  ]
  1 => array:2 [▼
    "name" => "yabao_road"
    "dist" => "162.8454"
  ]
  2 => array:2 [▼
    "name" => "cofco"
    "dist" => "239.7758"
  ]
  3 => array:2 [▼
    "name" => "galaxy_soho"
    "dist" => "386.9165"
  ]
]
根据已有的位置查询
/**
 * 根据集合中的元素查询范围内元素,如果不转 key就用默认的
 * @param $name         集合中的元素名
 * @param $radius       范围
 * @param $unit         单位
 * @param null $key     集合名
 * @return mixed
 */
$search = $lbs->->searchByMembers("fesco",500,"m");

返回数组
array:4 [▼
  0 => array:2 [▼
    "name" => "fesco"
    "dist" => "0.1250"
  ]
  1 => array:2 [▼
    "name" => "yabao_road"
    "dist" => "162.8454"
  ]
  2 => array:2 [▼
    "name" => "cofco"
    "dist" => "239.7758"
  ]
  3 => array:2 [▼
    "name" => "galaxy_soho"
    "dist" => "386.9165"
  ]
]
列出集合的所有值(其实就是 zrange)
/**
 * 列出集合中的内容
 * @param $key          集合的key
 * @param int $start    起始位置
 * @param int $end      结束位置 -1 为直到末尾
 * @return array
 */
$list = $lbs->list($test->geoset_name,2,-1);

返回数组
array:6 [▼
  0 => "jianguomen"
  1 => "yabao_road"
  2 => "fesco"
  3 => "cofco"
  4 => "galaxy_soho"
  5 => "chaoyangmen"
]

博客原文

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22573.html

相关文章

  • 使用redisgeo api实现搜索附近的人自己写的一个composer

    摘要:地址安装需要使用,安装中国镜像如果是应用在项目当中的话找到根目录,需要和同级基本操作初始化添加在集合中新加一个坐标结构是或者返回删除删除集合中指定元素默认存在集合,可以指定返回或如果是指定的集合名就用坐标查询附近的单位查询范围内元素 git地址 安装 需要使用composer,安装composer, composer中国镜像 如果是应用在项目当中的话找到根目录,需要和 composer...

    awesome23 评论0 收藏0
  • redis专题(10)】命令语法介绍之GEO

    摘要:获取指定元素范围的地理信息位置集合使用命令即可查询附近的位置例如查找距离杭州以内的城市的个城市按距离排序在返回位置元素的同时,将位置元素与中心之间的距离也一并返回。距离的单位和用户给定的范围单位保持一致。 简述 移动互联网时代LBS应用越来越多,交友软件中附近的小姐姐、外卖软件中附近的美食店铺、打车软件附近的车辆等等,那这种附近各种形形色色的XX是如何实现的呢 我么你都知道地球上的地理...

    BicycleWarrior 评论0 收藏0
  • 【戴嘉乐】基于IPFS和GeoHash构建具有地理位置价值服务的DDApp(理论篇)

    摘要:数据将具有如下个特点将二维的经纬度转换成字符串,比如下图展示了北京个区域的字符串,分别是,等等,每一个字符串代表了某一矩形区域。例如,坐标对,位于北京安定门附近,后形成的值为。 作者简介:戴嘉乐( Mr.Maple ) | 前百度高级研发工程师 | IPFS应用实践者&布道师|个人网站:https://www.daijiale.cn联系方式:微信号:daijiale6239。 show...

    lmxdawn 评论0 收藏0
  • Redis 快速提高系统性能的银弹

    摘要:接下来我们就来说说怎么使用解决之前提到的问题配置中心本身就是内存数据库,支持哈希集合列表等五种数据结构,从而配置信息的存储读取速度都能够得到满足,还提供订阅发布功能从而可以在配置发生改变时通知不同服务器来进行更新相关配置。 GitChat 作者:拿客_三产原文:Redis 快速提高系统性能的银弹关注微信公众号:GitChat 技术杂谈 ,一本正经的讲技术 【不要错过文末彩蛋】 前言 说...

    anRui 评论0 收藏0
  • 你可能不知道的Redis用法

    摘要:字符的码与位的对应关系通过位操作设置字符统计与查找除了设置和获取位图的值以外,还提供了和分别用于统计和查找。布隆过滤器是什么,以及原理这里就不说了,只说跟相关的。官方提供的布隆过滤器到了提供了插件功能才正式登出。 0. 引言 基于Redis丰富的数据结构,除了充当缓存层来提升查询效率以外,还能应用在很多常见的场景,比如:分布式锁,消息队列,限流等。看到这些场景你可能会有疑问,Redis...

    刘德刚 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<