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 )


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM