国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

redis日常使用之geo

james / 2290人閱讀

參考網(wǎng)址

redis命令

php操作redis


環(huán)境要求

首先確保已經(jīng)安裝redis 并且已經(jīng)啟動(dòng)

確保PHP已經(jīng)安裝redis擴(kuò)展

php -m | grep redis

redis相關(guān)命令整體一覽

GEOADD

GEODIST

GEORADIUS

GEORADIUSBYMEMBER

GEOHASH


GEOADD 插入命令

命令: GEOADD key longitude latitude member [longitude latitude member …]

命令詳解 
- 顧名思義這是一個(gè)添加命令
1.向一個(gè)geo類型的有序集合中添加數(shù)據(jù)  
2.可以傳遞多個(gè)參數(shù) 同時(shí)添加
3.經(jīng)緯度限制
    有效的經(jīng)度介于 -180 度至 180 度之間
    有效的緯度介于 -85.05112878 度至 85.05112878 度之間
2.返回成功添加到鍵中的空間元素 不包含已經(jīng)存在但是更新的元素  

注意:
1.必須按照x,y格式 經(jīng)度在前 緯度災(zāi)后  

命令使用

- 首先打開客戶端

正確添加
# geoadd myplace 116.580799 39.929301 me 116.580691 39.929007 you 116.58101 39.928931 other  

錯(cuò)誤示范
# geoadd test 181 181 one


php中調(diào)用

// 實(shí)例化redis對(duì)象
$redis = new Redis();

// 鏈接redis 本機(jī)host地址 默認(rèn)端口號(hào)
$redis->connect("127.0.0.1", 6379);

// 插入正確數(shù)據(jù)
$successRes = $redis->geoAdd(
    "myplace", // 鍵值
    116.580799, 39.929301, "me", // 第一個(gè)元素的經(jīng)緯度 以及對(duì)應(yīng)名稱
    116.580691,39.929007, "you",
    116.58101, 39.928931, "other"
);

// 插入錯(cuò)誤數(shù)據(jù)
$faildRes = $redis->geoAdd(
    "test",
    181, 181, "one"
);

var_dump($successRes);
var_dump($faildRes);

GEOPOS 獲取指定元素的位置

命令:GEOPOS key member [member …]

命令詳解:

- 獲取位置 百度翻譯說pos可能是位置的縮寫
1.返回一個(gè)鍵中給定元素的位置
2.參數(shù)可以傳遞多個(gè) 
3.返回參數(shù)每一項(xiàng)都由兩個(gè)元素組成 第一個(gè)元素為經(jīng)度 第二個(gè)元素為緯度
4.如果給定元素不存在 返回nil  

命令使用

正確使用
# geopos myplace me you other  

錯(cuò)誤使用 獲取一個(gè)不存在元素
# geopos myplace one

PHP中使用

// 實(shí)例化redis對(duì)象
$redis = new Redis();

// 鏈接redis 本機(jī)host地址 默認(rèn)端口號(hào)
$redis->connect("127.0.0.1", 6379);

// 獲取正確數(shù)據(jù)
$successRes = $redis->geoPos(
    "myplace", // 鍵值
    "me" // 元素名稱
);

// 獲取錯(cuò)誤數(shù)據(jù)
$faildRes = $redis->geoPos(
    "myplace", // 鍵值
    "one" // 不存在的元素
);

var_dump($successRes);
var_dump($faildRes);

GEODIST 獲取兩個(gè)元素之間的距離

命令: GEODIST key member1 member2 [unit]

命令詳解
- 獲取兩個(gè)元素之間的距離 dist 距離
1.參數(shù)固定 只能計(jì)算兩個(gè)元素之間的距離
2.最后一個(gè)參數(shù) unit 代表單位 默認(rèn)為米(m) 有如下幾個(gè)參數(shù)
    m 表示單位為米。
    km 表示單位為千米。
    mi 表示單位為英里。
    ft 表示單位為英尺
    
返回值:計(jì)算出的距離會(huì)以雙精度浮點(diǎn)數(shù)的形式被返回 如果給定的位置元素(任何一個(gè))不存在, 那么命令返回空值

注意:該命令在計(jì)算距離時(shí)會(huì)假設(shè)地球?yàn)橥昝赖那蛐?在極限情況下 這一假設(shè)最大會(huì)造成 0.5% 的誤差  

命令使用

獲取兩個(gè)元素之間的距離 以米為單位
# geodist myplace me you m

錯(cuò)誤使用 獲取一個(gè)不存在的元素
# geodist myplace me not m

PHP中使用

// 實(shí)例化redis對(duì)象
$redis = new Redis();

// 鏈接redis 本機(jī)host地址 默認(rèn)端口號(hào)
$redis->connect("127.0.0.1", 6379);

// 獲取正確的數(shù)據(jù)
$successRes = $redis->geoDist(
    "myplace", // 鍵值
    "me", // 元素
    "you", // 元素
    "m" // 距離單位
);

// 獲取錯(cuò)誤的數(shù)據(jù)
$faildRes = $redis->geoDist(
    "myplace", // 鍵值
    "me", // 元素
    "not" // 不存在的元素
);

var_dump($successRes);
var_dump($faildRes);
GEORADIUS 獲取所有不超過指定經(jīng)緯度特定距離的所有元素

命令:GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [ASC|DESC] [COUNT count]

命令詳解:
- 獲取指定經(jīng)緯度內(nèi)一個(gè)半徑的元素信息 radius半徑
1.必須指定經(jīng)緯度 經(jīng)度在前 緯度在后
2.可以指定范圍 范圍單位如下
    m 表示單位為米  
    km 表示單位為千米 
    mi 表示單位為英里
    ft 表示單位為英尺
3.獲取與給定經(jīng)緯度之間的距離 需要參數(shù) WITHDIST 單位與給定的距離單位相同
4.獲取返回元素的經(jīng)緯度 需要參數(shù) WITHCOORD
5.可以使用距離進(jìn)行排序 ASC 從近到遠(yuǎn) DESC 從遠(yuǎn)到近
6.返回的數(shù)量
 
返回值:返回一個(gè)數(shù)組  

命令使用

獲取一個(gè)元素中距離給定坐標(biāo)特定距離的所有元素 顯示距離 顯示坐標(biāo) 按照從近到遠(yuǎn) 顯示3條
# georadius myplace 116.578486 39.927244 200 km WITHCOORD WITHDIST ASC COUNT 3    

PHP中使用

// 實(shí)例化redis對(duì)象
$redis = new Redis();

// 鏈接redis 本機(jī)host地址 默認(rèn)端口號(hào)
$redis->connect("127.0.0.1", 6379);

$options[] = "WITHDIST"; // 距離
$options[] = "WITHCOORD"; // 經(jīng)緯度
$options[] = "ASC"; // 排序 ASC|DESC
$options["COUNT"] = 3; // 條數(shù)

// 獲取正確的數(shù)據(jù)
$successRes = $redis->geoRadius(
    "myplace", // 鍵值
    "116.578486", // 經(jīng)度
    "39.927244", // 緯度
    "200", // 距離
    "km", // 距離單位
    $options // 其他可選參數(shù)
);

var_dump($successRes);
GEORADIUSBYMEMBER 獲取所有不超過指定元素特定距離的所有元素

命令:GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [ASC|DESC] [COUNT count]

命令詳解
- 根據(jù)鍵值中的一個(gè)元素獲取指定距離內(nèi)的元素 相當(dāng)與GEORADIUS命令的另一版本
1.需要指定元素 而不是經(jīng)緯度

注意:元素必須是鍵值中已經(jīng)存在的元素 返回值也會(huì)包含選定的元素

返回值:數(shù)組

命令使用

獲取一個(gè)元素指定范圍內(nèi)的元素 選定元素 me 距離 200 單位 m 返回距離 經(jīng)緯度 從近到遠(yuǎn) 3條
# georadiusbymember myplace me 200 m WITHCOORD WITHDIST ASC COUNT 3  

PHP中使用

// 實(shí)例化redis對(duì)象
$redis = new Redis();

// 鏈接redis 本機(jī)host地址 默認(rèn)端口號(hào)
$redis->connect("127.0.0.1", 6379);

$options[] = "WITHDIST"; // 距離
$options[] = "WITHCOORD"; // 經(jīng)緯度
$options[] = "ASC"; // 排序 ASC|DESC
$options["COUNT"] = 3; // 條數(shù)

// 獲取正確的數(shù)據(jù)
$successRes = $redis->geoRadiusByMember(
    "myplace", // 鍵值
    "me", // 元素
    "200", // 距離
    "km", // 距離單位
    $options // 其他可選參數(shù)
);

var_dump($successRes);
GEOHASH 獲取一個(gè)元素的geo hash值

命令:GEOHASH key member [member …]

命令詳解
- 獲取geo的hash值
1.可以同時(shí)獲取多個(gè)元素的hash值

注意:返回的數(shù)據(jù)需要自己對(duì)應(yīng)

返回值:一個(gè)數(shù)組 數(shù)組的每個(gè)項(xiàng)都是一個(gè) geohash 

命令使用

獲取geohash
# geohash myplace me you other

PHP使用

// 實(shí)例化redis對(duì)象
$redis = new Redis();

// 鏈接redis 本機(jī)host地址 默認(rèn)端口號(hào)
$redis->connect("127.0.0.1", 6379);

// 獲取正確的數(shù)據(jù)
$successRes = $redis->geoHash(
    "myplace", // 鍵值
    "me", // 元素
    "you", // 元素
    "other" // 元素
);

var_dump($successRes);

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/31690.html

相關(guān)文章

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<