首先确保已经安装redis 而且已经启动php
确保PHP已经安装redis扩展html
php -m | grep redis
![]()
命令: GEOADD key longitude latitude member [longitude latitude member …]git
命令详解 - 顾名思义这是一个添加命令 1.向一个geo类型的有序集合中添加数据 2.能够传递多个参数 同时添加 3.经纬度限制 有效的经度介于 -180 度至 180 度之间 有效的纬度介于 -85.05112878 度至 85.05112878 度之间 2.返回成功添加到键中的空间元素 不包含已经存在可是更新的元素 注意: 1.必须按照x,y格式 经度在前 纬度灾后
命令使用github
- 首先打开客户端 正确添加 # geoadd myplace 116.580799 39.929301 me 116.580691 39.929007 you 116.58101 39.928931 other 错误示范 # geoadd test 181 181 one
php中调用redis
// 实例化redis对象 $redis = new \Redis(); // 连接redis 本机host地址 默认端口号 $redis->connect('127.0.0.1', 6379); // 插入正确数据 $successRes = $redis->geoAdd( 'myplace', // 键值 116.580799, 39.929301, 'me', // 第一个元素的经纬度 以及对应名称 116.580691,39.929007, 'you', 116.58101, 39.928931, 'other' ); // 插入错误数据 $faildRes = $redis->geoAdd( 'test', 181, 181, 'one' ); var_dump($successRes); var_dump($faildRes);
命令:GEOPOS key member [member …] 数组
命令详解:spa
- 获取位置 百度翻译说pos多是位置的缩写 1.返回一个键中给定元素的位置 2.参数能够传递多个 3.返回参数每一项都由两个元素组成 第一个元素为经度 第二个元素为纬度 4.若是给定元素不存在 返回nil
命令使用翻译
正确使用 # geopos myplace me you other 错误使用 获取一个不存在元素 # geopos myplace one
PHP中使用code
// 实例化redis对象 $redis = new \Redis(); // 连接redis 本机host地址 默认端口号 $redis->connect('127.0.0.1', 6379); // 获取正确数据 $successRes = $redis->geoPos( 'myplace', // 键值 'me' // 元素名称 ); // 获取错误数据 $faildRes = $redis->geoPos( 'myplace', // 键值 'one' // 不存在的元素 ); var_dump($successRes); var_dump($faildRes);
命令: GEODIST key member1 member2 [unit]htm
命令详解 - 获取两个元素之间的距离 dist 距离 1.参数固定 只能计算两个元素之间的距离 2.最后一个参数 unit 表明单位 默认为米(m) 有以下几个参数 m 表示单位为米。 km 表示单位为公里。 mi 表示单位为英里。 ft 表示单位为英尺 返回值:计算出的距离会以双精度浮点数的形式被返回 若是给定的位置元素(任何一个)不存在, 那么命令返回空值 注意:该命令在计算距离时会假设地球为完美的球形 在极限状况下 这一假设最大会形成 0.5% 的偏差
命令使用
获取两个元素之间的距离 以米为单位 # geodist myplace me you m 错误使用 获取一个不存在的元素 # geodist myplace me not m
PHP中使用
// 实例化redis对象 $redis = new \Redis(); // 连接redis 本机host地址 默认端口号 $redis->connect('127.0.0.1', 6379); // 获取正确的数据 $successRes = $redis->geoDist( 'myplace', // 键值 'me', // 元素 'you', // 元素 'm' // 距离单位 ); // 获取错误的数据 $faildRes = $redis->geoDist( 'myplace', // 键值 'me', // 元素 'not' // 不存在的元素 ); var_dump($successRes); var_dump($faildRes);
命令:GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [ASC|DESC] [COUNT count]
命令详解: - 获取指定经纬度内一个半径的元素信息 radius半径 1.必须指定经纬度 经度在前 纬度在后 2.能够指定范围 范围单位以下 m 表示单位为米 km 表示单位为公里 mi 表示单位为英里 ft 表示单位为英尺 3.获取与给定经纬度之间的距离 须要参数 WITHDIST 单位与给定的距离单位相同 4.获取返回元素的经纬度 须要参数 WITHCOORD 5.可使用距离进行排序 ASC 从近到远 DESC 从远到近 6.返回的数量 返回值:返回一个数组
命令使用
获取一个元素中距离给定坐标特定距离的全部元素 显示距离 显示坐标 按照从近到远 显示3条 # georadius myplace 116.578486 39.927244 200 km WITHCOORD WITHDIST ASC COUNT 3
PHP中使用
// 实例化redis对象 $redis = new \Redis(); // 连接redis 本机host地址 默认端口号 $redis->connect('127.0.0.1', 6379); $options[] = 'WITHDIST'; // 距离 $options[] = 'WITHCOORD'; // 经纬度 $options[] = 'ASC'; // 排序 ASC|DESC $options['COUNT'] = 3; // 条数 // 获取正确的数据 $successRes = $redis->geoRadius( 'myplace', // 键值 '116.578486', // 经度 '39.927244', // 纬度 '200', // 距离 'km', // 距离单位 $options // 其余可选参数 ); var_dump($successRes);
命令:GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [ASC|DESC] [COUNT count]
命令详解 - 根据键值中的一个元素获取指定距离内的元素 至关与GEORADIUS命令的另外一版本 1.须要指定元素 而不是经纬度 注意:元素必须是键值中已经存在的元素 返回值也会包含选定的元素 返回值:数组
命令使用
获取一个元素指定范围内的元素 选定元素 me 距离 200 单位 m 返回距离 经纬度 从近到远 3条 # georadiusbymember myplace me 200 m WITHCOORD WITHDIST ASC COUNT 3
PHP中使用
// 实例化redis对象 $redis = new \Redis(); // 连接redis 本机host地址 默认端口号 $redis->connect('127.0.0.1', 6379); $options[] = 'WITHDIST'; // 距离 $options[] = 'WITHCOORD'; // 经纬度 $options[] = 'ASC'; // 排序 ASC|DESC $options['COUNT'] = 3; // 条数 // 获取正确的数据 $successRes = $redis->geoRadiusByMember( 'myplace', // 键值 'me', // 元素 '200', // 距离 'km', // 距离单位 $options // 其余可选参数 ); var_dump($successRes);
命令:GEOHASH key member [member …]
命令详解 - 获取geo的hash值 1.能够同时获取多个元素的hash值 注意:返回的数据须要本身对应 返回值:一个数组 数组的每一个项都是一个 geohash
命令使用
获取geohash # geohash myplace me you other
PHP使用
// 实例化redis对象 $redis = new \Redis(); // 连接redis 本机host地址 默认端口号 $redis->connect('127.0.0.1', 6379); // 获取正确的数据 $successRes = $redis->geoHash( 'myplace', // 键值 'me', // 元素 'you', // 元素 'other' // 元素 ); var_dump($successRes);