redis技巧 IP位址查詢對應城市

2022-07-13 05:51:15 字數 1034 閱讀 1487

場景:

根據ip位址判斷使用者所在地,雖然網上有好多篇了,但我記錄乙個一看就懂的,不用看超長文字再自己理解了。

上海: 202.127.0.0 ~ 202.127.4.255

北京: 122.200.64.0 ~ 122.207.255.255

此時如果使用者的ip位址為122.202.2.0,我們就能根據這個表知道他的位址位於北京。

方法:

使用有序集合記錄這個表,每個城市儲存兩條資料,一條是城市名對應的分數為最大ip位址。另一條是「#」加上城市名對應的分數為最小ip位址。

分析:

取大於當前ip的最近的上乙個分數值,如果值是#開頭,說明是某乙個城市的最小ip,就是當前ip不在任何城市範圍內,如果不是#開頭,那ip就屬於這個城市。

|----上海最大ip(80=>sh)

|----上海最小ip(50=>#

sh)|----北京最大ip(30=>bj)

|----北京最小ip(20=>#

bj)

**實現:

//

先用ip2long把ip位址轉為對應的十進位制數,這裡為了方便直接使用虛擬數字表示

$redis->zadd('zset', 20, '#bj'); //

最小ip加#

$redis->zadd('zset', 30, 'bj');

$redis->zadd('zset', 50, '#sh'); //

最小ip加#

$redis->zadd('zset', 80, 'sh');

//獲取ip對應的城市

$cityip = 34;

$b = $redis->zrangebyscore('zset', $cityip, '+inf', array( 'limit'=>array(0,1) ));

if ($b

) else

} else

IP位址查詢

coding utf 8 ip 61.158.147.194 import urllib,urllib2,cookielib,sys,cjson reload sys sys.setdefaultencoding utf 8 url 定義介面位址,限制10qps headers headers ok...

IP位址查詢

coding utf 8 ip 61.158.147.194 import urllib,urllib2,cookielib,sys,cjson reload sys sys.setdefaultencoding utf 8 url 定義介面位址,限制10qps headers headers ok...

IP位址分類及對應範圍

ip位址由四段組成,每個欄位是乙個位元組,即4個位元組 每個位元組有8位,最大值是255 全世界範圍是唯一的 32 位 4個位元組 8位 的識別符號。ip位址由兩部分組成,即網路位址和主機位址,二者是主從關係 1.網路號 net id,它標誌主機 或路由器 所連線到的網路,網路位址表示其屬於網際網路...