10 微秒級別效能!C# 開發的離線IP位址庫

10 微秒級別效能!C# 開發的離線IP位址庫

ip2region v2.0 - 是一個離線IP位址定位庫和IP定位資料管理框架,10微秒級別的查詢效率,提供了眾多主流程式語言的 xdb 資料生成和查詢客戶端實作。

最後更新 2023/7/7 上午1:08
工具箱
預計閱讀 3 分鐘
分類
.NET
標籤
.NET C#

Ip2region 是什麼?

ip2region v2.0 - 是一個離線 IP 位址定位庫和 IP 定位資料管理框架,10 微秒級別的查詢效率,提供了眾多主流程式語言的 xdb 資料產生和查詢客戶端實作。

應用場景

Ip2region 廣泛應用在各種需要進行 IP 位址定位的場景,例如,可以用於偵測和阻止來自某些地區或國家的 IP 位址的攻擊行為,可以根據使用者的 IP 位址定位到具體的地理位置。可以根據 IP 位址的地理位置資訊進行資料分析和統計,例如統計某個地區的使用者量等。

功能特性

1、標準化的資料格式

每個 IP 資料段的 region 資訊都固定了格式:國家|區域|省份|城市|ISP,只有中國的資料絕大部分精確到了城市,其他國家部分資料只能定位到國家,後面的選項全部是 0。

2、資料去重和壓縮

xdb 格式產生程式會自動去重和壓縮部分資料,預設的全部 IP 資料,產生的 ip2region.xdb 資料庫是 11MiB,隨著資料的詳細度增加資料庫的大小也慢慢增大。

3、極速查詢回應

即使是完全基於 xdb 檔案的查詢,單次查詢回應時間在十微秒級別,可透過如下兩種方式開啟記憶體加速查詢:

vIndex 索引快取:使用固定的 512KiB 的記憶體空間快取 vector index 資料,減少一次 IO 磁碟操作,保持平均查詢效率穩定在 10-20 微秒之間。xdb 整個檔案快取:將整個 xdb 檔案全部載入到記憶體,記憶體佔用等同於 xdb 檔案大小,無磁碟 IO 操作,保持微秒級別的查詢效率。

4、IP 資料管理框架

v2.0 格式的 xdb 支援億級別的 IP 資料段行數,region 資訊也可以完全自訂,例如:你可以在 region 中追加特定業務需求的資料,例如:GPS 資訊/國際統一地域資訊編碼/郵編等。也就是你完全可以使用 ip2region 來管理你自己的 IP 定位資料。

如何在 C# 中使用?

  1. 安裝 NuGet 套件 IP2Region.Net。
Install-Package IP2Region.Net
  1. 使用 API 查詢,非常簡單!
using IP2Region.Net.XDB;

Searcher searcher = new Searcher();
searcher.Search("IP位址");

依賴注入

services.AddSingleton<ISearcher,Searcher>();

效能

專案位址

https://github.com/lionsoul2014/ip2region

繼續探索

延伸閱讀

更多文章
同分類 / 同標籤 2026/2/7

AOT使用經驗總結

從專案建立伊始,就應養成良好的習慣,即只要添加了新功能或使用了較新的語法,就及時進行 AOT 發布測試。

繼續閱讀