序言
ip2region
ip2region - 离线的ip地址查询库,ip到地区的映射库,提供二进制,B树,内存搜索三种查询算法,查询速度非常快。
支持Java,PHP,C,Python,Nodejs,Golang,C#等语言,本文以Python为例
前期准备
- 在GitHub上克隆下来源文件地址
- 下载完的文件:
- 解压文件分别找到ip2region-master\data\ip2region.db和ip2region-master\binding\python\ip2Region.py
- 创建自己的文件query_ip.py
from ip2Region import Ip2Region # 此处导入的是刚才复制的py文件
db_file = './ip2region.db' # 数据库文件路径
def ip_search(ip):
searcher = Ip2Region(db_file) # 实例化
searcher.isip(ip)
# 三种算法任选其一
# data = searcher.btreeSearch(ip) # B树
# data = searcher.binarySearch(ip) #二进制
data = searcher.memorySearch(ip) # 内存
print(data)
print("%s|%s" % (ip, data["region"].decode('utf-8')))
searcher.close()
if __name__ == "__main__":
ip_search("123.205.32.32")
-
目录
-
执行查询函数结果
注:查询方式选择
全部的查询客户端单次查询都在0.x毫秒级别,内置了三种查询算法
memory算法:整个数据库全部载入内存,单次查询都在0.1x毫秒内,C语言的客户端单次查询在0.00x毫秒级别。
binary算法:基于二分查找,基于ip2region.db文件,不需要载入内存,单次查询在0.x毫秒级别。
b-tree算法:基于btree算法,基于ip2region.db文件,不需要载入内存,单词查询在0.x毫秒级别,比binary算法更快。
任何客户端b-tree都比binary算法快,当然memory算法固然是最快的!