redis3.2中增中了对GEO类型的支持,该类型存储经纬度,提供了经纬设置,查询,范围查询,距离查询,经纬度hash等操作。

<?php

$redis = new Redis();
$redis->connect('127.0.0.1', 6379, 60);
$redis->auth(''); //添加成员的经纬度信息
$redis->rawCommand('geoadd', 'citys', '116.40', '39.90', 'beijing');
$redis->rawCommand('geoadd', 'citys', '121.47', '31.23', 'shanghai');
$redis->rawCommand('geoadd', 'citys', '114.30', '30.60', 'wuhan'); echo '<pre>'; //获取两个地理位置的距离,单位:m(米,默认), km(千米), mi(英里), ft(英尺)
var_dump($redis->rawCommand('geodist', 'citys', 'beijing', 'wuhan'));
var_dump($redis->rawCommand('geodist', 'citys', 'beijing', 'shanghai', 'km')); //获取成员的经纬度
var_dump($redis->rawCommand('geopos', 'citys', 'shanghai')); //获取成员的经纬度hash,geohash表示坐标的一种方法,便于检索和存储
var_dump($redis->rawCommand('geohash', 'citys', 'shanghai', 'wuhan')); //基于经纬度坐标的范围查询
//查询以经纬度为114,30为圆心,100千米范围内的成员
var_dump($redis->rawCommand('georadius', 'citys', '114', '30', '100', 'km')); //WITHCOORD表示获取成员经纬度
var_dump($redis->rawCommand('georadius', 'citys', '114', '30', '100', 'km', 'WITHCOORD')); //WITHDIST表示获取到圆心的距离
var_dump($redis->rawCommand('georadius', 'citys', '114', '30', '100', 'km', 'WITHDIST')); //WITHHASH表示获取成员经纬度HASH值
var_dump($redis->rawCommand('georadius', 'citys', '114', '30', '100', 'km', 'WITHHASH')); //COUNT 数量,表示限制获取成员的数量
var_dump($redis->rawCommand('georadius', 'citys', '114', '30', '100', 'km', 'COUNT', '3')); // ASC 根据圆心位置,从近到远的返回元素
// DESC 根据圆心位置,从远到近的返回元素
var_dump($redis->rawCommand('georadius', 'citys', '114', '30', '100', 'km', 'ASC')); //基于成员位置范围查询
//查询以武汉为圆心,100千米范围内的成员
var_dump($redis->rawCommand('georadiusbymember', 'citys', 'wuhan', '100', 'km'));

  

php使用redis的GEO地理信息类型的更多相关文章

  1. Spring Boot 2 实战:利用Redis的Geo功能实现查找附近的位置

    1. 前言 老板突然要上线一个需求,获取当前位置方圆一公里的业务代理点.明天上线!当接到这个需求的时候我差点吐血,这时间也太紧张了.赶紧去查相关的技术选型.经过一番折腾,终于在晚上十点完成了这个需求. ...

  2. redis数据类型-散列类型

    Redis数据类型 散列类型 Redis是采用字典结构以键值对的形式存储数据的,而散列类型(hash)的键值也是一种字典结构,其存储了字段(field)和字段值的映射,但字段值只能是字符串,不支持其他 ...

  3. 尚硅谷redis学习4-数据类型

    redis的数据类型包括String,Hash(类似于JAVA里的map),List,Set,Zset(sorted Set) String(字符串) string是redis最基本的类型,你可以理解 ...

  4. 7、Redis中对ZSet类型的操作命令

    写在前面的话:读书破万卷,编码如有神 --------------------------------------------------------------------   ---------- ...

  5. 6、Redis中对Hash类型的操作命令

    写在前面的话:读书破万卷,编码如有神 -------------------------------------------------------------------- ------------ ...

  6. Redis 的 GEO 特性将在 Redis 3.2 版本释出

    Redis 的 GEO 特性将在 Redis 3.2 版本释出, 这个功能可以将用户给定的地理位置信息储存起来, 并对这些信息进行操作. 本文将对 Redis 的 GEO 特性进行介绍, 说明这个特性 ...

  7. 5、Redis中对Set类型的操作命令

    写在前面的话:读书破万卷,编码如有神 -------------------------------------------------------------------- ------------ ...

  8. 4、Redis中对List类型的操作命令

    写在前面的话:读书破万卷,编码如有神 -------------------------------------------------------------------- ------------ ...

  9. 3、Redis中对String类型的操作命令

    写在前面的话:读书破万卷,编码如有神 -------------------------------------------------------------------- ------------ ...

随机推荐

  1. Python数据类型的内置函数之str(字符串)

    Python数据类型内置函数 - str(字符串) - list(列表) - tuple(元组) - dict(字典) - set(收集) str(字符串)的一些操作 - 字符串相连方法 # 字符串的 ...

  2. spring整合thymeleaf

    官方文档入口:https://www.thymeleaf.org/doc/tutorials/2.1/thymeleafspring.html 1.首先需要引入thymeleaf的依赖(据官网文档,t ...

  3. Postman runner参数化

    按照下面图片的顺序操作吧~ lets go 1.把要做参数化的字段的value用花括号标识起来,如:{{phone}} 2.准备一个csv的文件,把每次请求接口的参数按下图填写好,第一行写字段名称(p ...

  4. python-pytest学习

    一:pytest基于unittest之上的单元测试框架1.自动发现测试模块和测试方法:2.断言使用assert+表达式即可:3.可以设置会话级.模块级.类级.函数级的fixtures :数据准备+清理 ...

  5. Exp3 免杀原理与实践 20164313

    基础 AV厂商检测恶意软件的三种主流方式: 基于特征码的检测 启发式恶意软件检测 基于行为的恶意软件检测 实现免杀就是防止恶意软件被这是三种方式找到.具体手段为: 改变特征码 改变行为 非常规恶意软件 ...

  6. leetcode每日刷题计划-简单篇day5

    刷题成习惯以后感觉挺好的 Num 27 移除元素 Remove Element 跟那个排序去掉相同的一样,len标记然后新的不重复的直接放到len class Solution { public: i ...

  7. 关于XML的小思考

    最近一段时间又接触了XML语言,现在看来它是一种可扩展标记语言,它的格式是标签语言,例如<>****<>此类,它在动态编译中有重要的作用,举个例子,一个班级里有37个人,到学期 ...

  8. jQuery validdate插件的使用

    跟着书上的例子做的时候发现很奇怪,在script标签中用message重写提示消息,没有反应,不知道是不是引入的metadata.js文件有问题,于是用了菜鸟教程的cdn和教程,魔改了一下 <! ...

  9. mvc后台上传

    public ActionResult AddEnclosure(HttpPostedFileBase Filedata) { if (Filedata == null || string.IsNul ...

  10. Echarts修改提示框及自定义提示框内容

    1:首先先定义自定义的json数据 var msg = [{ 'tell':'110', 'ContentMessage':"我今天去吃大餐" },{ 'tell':'111', ...