Ip2region 3.7.1 发布 - Lua IPv6 支持 + binding API 统一
Ip2region 是一个离线的 IP 数据管理框架和定位库,同时支持 IPv4 和 IPv6,支持亿级别的 IP 断管理,10 微秒级别的查询性能,提供了很多主流编程语言的 xdb 数据格式的生成和查询实现。
ip2region 官方社区已正式上线旨提强化 IP 相关的工具链和数据服务,目前提供了稳定的 商用离线数据、在线查询测试、xdb 使用 / 技术文档。
ip2region 3.7.1 详细更新如下:
1,feat(CSharp): 增加注入服务扩展方法 by @ArgoZhang in https://github.com/lionsoul2014/ip2region/pull/390
2,lua binding 提供了对 IPv6 的查询支持,具体请参考文档 [Lua binding],测试方式如下:
➜ lua git:(master) lua ./search_test.lua --db=../../data/ip2region_v6.xdb
ip2region xdb searcher test program
source xdb: ../../data/ip2region_v6.xdb (IPv6, vectorIndex)
type 'quit' to exit
ip2region>> ::
{region: , io_count: 1, took: 0μs}
ip2region>> 240e:3b7:3272:d8d0:3b7b:3ee0:1d39:848
{region: 中国|广东省|深圳市|家庭宽带, io_count: 8, took: 0μs}
ip2region>> 240e:3b7:3272:fab0:f703:5fef🇧🇪37e9
{region: 中国|广东省|深圳市|家庭宽带, io_count: 8, took: 0μs}
ip2region>>
3,查询平均耗时:Razer 笔记本 / Ubuntu (电源均衡模式) + SATA SSD / VectorIndex 缓存,bench 结果如下:
➜ lua git:(master) lua ./bench_test.lua --db=../../data/ip2region_v6.xdb --src=../../data/ipv6_source.txt
Bench finished, {cachePolicy: vectorIndex, total: 1614544, took: {total: 72.000s, search: 64.000s}, cost: 39.640 μs/op}
161.4 万个 IPv6 平均查询耗时为 `39.6` 微秒/次。
4,支持 xdb 3.0 的 binding 查询结果返回统一:查询出错保持原有的方式,找到了就返回字符串的 `region` 信息,如果找不到指定 IP 的定位信息则返回空字符串 `""` ;原来的比较混乱,各种语言不统一,这对于一些自定义数据或者数据不完整的情况会出现,例如 ipv6 的原始数据就是从 `1:1::` 开始的,搜索 `::` 就会返回空。
5,支持 xdb 3.0 的 binding 中的 ReadMe 测试定位信息纠正,使用最新的 IPv6 纠正错误的定位信息。
6,支持 xdb 3.0 的 binding ReadMe 增加查询 API 的原型描述。
7,binding 发行版本更新:
Java:
<dependency>
<groupId>org.lionsoul</groupId>
<artifactId>ip2region</artifactId>
<version>3.1.1</version>
</dependency>
npm 版本更新为 `3.1.6`