PHPRedis教程之geo
前言
支持 GEO 系列命令的 Redis 版本从 3.2.0 起开始才可以使用,所以之前版本就不要想了。
函数列表
geoadd - 将指定的地理空间项(纬度,经度,名称)添加到指定的键, 数据作为有序集存储在 Redis 中。
GEOADD key longitude latitude member [longitude latitude member …]
key - 存储在 Redis 中的指定的键
longitude - 经度
latitude - 纬度
member - 成员名称
<?php
$redis->geoadd("city", 117.224311, 39.111515, "天津")
// 1
$redis->geoadd("city", 116.40378, 39.91544, "北京", 121.473913, 31.222965, "上海")
// 2
?>
geopos - 返回由key处的有序集表示的地理空间索引的所有指定成员的位置(经度,纬度)。
GEOPOS key member [member ...]
key - 存储在 Redis 中的指定的键
member - 成员名称
<?php
$redis->geopos("city", "天津") // Array ( [0] => Array ( [0] => 117.22431153059005737 [1] => 39.11151424175071867 ) )
$redis->geopos("city", "天津", "北京") // Array ( [0] => Array ( [0] => 117.22431153059005737 [1] => 39.11151424175071867 ) [1] => Array ( [0] => 116.40378087759017944 [1] => 39.91543907825245441 ) )
?>
geodist - 返回由有序集合表示的地理空间索引中的两个成员之间的距离。
GEODIST key member1 member2 [unit]
key - 存储在 Redis 中的指定的键
member - 成员名称
unit - 单位 m(米),km(千米),mi(英里),ft(英尺)
<?php
$redis->geodist("city","天津", "北京","km") //113.8093
?>
georadius - 使用GEOADD返回包含地理空间信息的已排序集合的成员,这些信息位于中心位置和与中心的最大距离(半径)指定区域的边界内。
GEORADIUS key longitude latitude radius unit(m|km|ft|mi) [WITHCOORD] [WITHDIST] [WITHHASH][COUNT count] [ASC|DESC] [STORE key][STOREDIST key]
key - 存储在 Redis 中的指定的键
longitude - 经度
latitude - 纬度
radius - 半径
unit - 单位 m(米),km(千米),mi(英里),ft(英尺)
WITHCOORD 返回目标的经纬度
WITHDIST 返回距离中心点的距离
WITHHASH 返回 52位 无符号整数的 geohash 有序集合分数
COUNT 返回条数
ASC|DESC 正序排序|倒序排序
<?php
$redis->georadius("city", 117.224311, 39.111515, 1000, "km", ['WITHDIST','ASC'])
// Array ( [0] => Array ( [0] => 上海 [1] => 958.4076 ) [1] => Array ( [0] => 北京 [1] => 113.8092 ) [2] => Array ( [0] => 天津 [1] => 0.0001 ) )
$redis->georadius("city", 117.224311, 39.111515, 1000, "km", ['WITHCOORD','WITHDIST','ASC','COUNT'=>1])
// Array ( [0] => Array ( [0] => 天津 [1] => 0.0001 [2] => Array ( [0] => 117.22431153059005737 [1] => 39.11151424175071867 ) ) )
?>
georadiusbymember - 这个命令与GEORADIUS完全相同,区别在于该命令返回的是成员附近的所有成员
GEORADIUSBYMEMBER key member radius unit(m|km|ft|mi) [WITHCOORD] [WITHDIST] [WITHHASH][COUNT count] [ASC|DESC] [STORE key][STOREDIST key]
key - 存储在 Redis 中的指定的键
member - 成员名称
radius - 半径
unit - 单位 m(米),km(千米),mi(英里),ft(英尺)
WITHCOORD 返回目标的经纬度
WITHDIST 返回距离中心点的距离
WITHHASH 返回 52位 无符号整数的 geohash 有序集合分数
COUNT 返回条数
ASC|DESC 正序排序|倒序排序
<?php
$redis->georadiusbymember("city", "天津", 200, "km", ['WITHCOORD', 'WITHDIST', 'ASC'])
//Array ( [0] => Array ( [0] => 天津 [1] => 0.0000 [2] => Array ( [0] => 117.22431153059005737 [1] => 39.11151424175071867 ) ) [1] => Array ( [0] => 北京 [1] => 113.8093 [2] => Array ( [0] => 116.40378087759017944 [1] => 39.91543907825245441 ) ) )
?>
geohash - 返回有效的Geohash字符串
GEOHASH key member [member …]
key - 存储在 Redis 中的指定的键
member - 成员名称
<?php
$redis->geohash("city", "天津", "北京")
// Array ( [0] => wwgqe801h60 [1] => wx4g0f6sk90 )
PHPRedis教程之geo的更多相关文章
- Kail Linux渗透测试教程之ARP侦查Netdiscover端口扫描Zenmap与黑暗搜索引擎Shodan
Kail Linux渗透测试教程之ARP侦查Netdiscover端口扫描Zenmap与黑暗搜索引擎Shodan ARP侦查工具——Netdiscover Netdiscover是一个主动/被动的AR ...
- [转]搬瓦工教程之九:通过Net-Speeder为搬瓦工提升网速
搬瓦工教程之九:通过Net-Speeder为搬瓦工提升网速 有的同学反映自己的搬瓦工速度慢,丢包率高.这其实和你的网络服务提供商有关.据我所知一部分上海电信的同学就有这种问题.那么碰到了坑爹的网络服务 ...
- jQuery EasyUI教程之datagrid应用(三)
今天继续之前的整理,上篇整理了datagrid的数据显示及其分页功能 获取数据库数据显示在datagrid中:jQuery EasyUI教程之datagrid应用(一) datagrid实现分页功能: ...
- jQuery EasyUI教程之datagrid应用(二)
上次写到了让数据库数据在网页datagrid显示,我们只是单纯的实现了显示,仔细看的话显示的信息并没有达到我们理想的效果,这里我们丰富一下: 上次显示的结果是这样的 点击查看上篇:jQuery Eas ...
- jQuery EasyUI教程之datagrid应用(一)
最近一段时间都在做人事系统的项目,主要用到了EasyUI,数据库操作,然后抽点时间整理一下EasyUI的内容. 这里我们就以一个简洁的电话簿软件为基础,具体地说一下datagrid应用吧 datagr ...
- kali linux 系列教程之metasploit 连接postgresql可能遇见的问题
kali linux 系列教程之metasploit 连接postgresql可能遇见的问题 文/玄魂 目录 kali linux 下metasploit 连接postgresql可能遇见的问题. ...
- kali Linux系列教程之BeFF安装与集成Metasploit
kali Linux系列教程之BeFF安装与集成Metasploit 文/玄魂 kali Linux系列教程之BeFF安装与集成Metasploit 1.1 apt-get安装方式 1.2 启动 1. ...
- Kali Linux系列教程之OpenVas安装
Kali Linux系列教程之OpenVas安装 文 /玄魂 目录 Kali Linux系列教程之OpenVas安装 前言 1. 服务器层组件 2.客户层组件 安装过程 Initial setup ...
- Playmaker Input篇教程之PlayMaker菜单概述
Playmaker Input篇教程之PlayMaker菜单概述 Playmaker InputPlayMaker菜单概述 Playmaker插件被导入游戏项目以后,会自动为Unity编辑器添加一个名 ...
随机推荐
- node中的crypto内置模块
crypto模块的目的是为了提供通用的加密和哈希算法.用纯JavaScript代码实现这些功能不是不可能,但速度会非常慢.Nodejs用C/C++实现这些算法后,通过cypto这个模块暴露为JavaS ...
- Jenkins发布.Net Core项目到IIS
安装Java8,Git,和Jenkins及插件. jenkins安装后以windows服务的方式运行,浏览器访问本机8080端口可访问. 自动部署的原理分为三步,首先从git服务器获取最新代码,然后用 ...
- python 绘制sinx
code import turtle import math turtle.speed() turtle.penup() turtle., * math.sin((-/) * * math.pi)) ...
- hdu6568 Math (概率dp)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6568 题意: 在$0$到$L$的坐标轴运输货物,在每个整数点可能丢失货物,丢失概率为$p$,丢失后可 ...
- 修改tomcat控制台的标题
Tomcat的bin目录下,创建一个名为setenv.bat的文件. setenv.bat 编辑内容 : set TITLE = 想要命名的标题名称 保存修改.重新启动. 第二种. 修改tomca ...
- 1.4 JAVA日期处理
一.JAVA日期 参考链接:https://www.runoob.com/java/java-date-time.html 1.日期两个构造函数 1.第一个构造函数使用当前日期和时间来初始化对象.Da ...
- QT 多线程程序设计 -互斥
QT通过三种形式提供了对线程的支持.它们分别是,一.平台无关的线程类,二.线程安全的事件投递,三.跨线程的信号-槽连接.这使得开发轻巧的多线程Qt程序更为容易,并能充分利用多处理器机器的优势.多线程编 ...
- linux(redhat)安装jdk1.8
第一步:下载Linux环境下的jdk1.8文件 我的Linux是32位的,因此我下载jdk-8u144-linux-i586.tar.gz文件. 下载链接地址:http://www.oracle.co ...
- leetcode218 天际线问题
来自leetcode题解:扫描线法AlgsCG class Solution { public: vector<vector<int>> getSkyline(vector&l ...
- Nginx优化之服务性能优化
优化Nginx服务的worker进程个数 修改nginx主配置文件 worker_processes 1; #指定了Nginx要开启的进程数,结尾数字就是进程个数 Nginx有Master进程和wor ...