| Crates.io | czdb |
| lib.rs | czdb |
| version | 0.2.2 |
| created_at | 2024-11-21 04:08:59.367155+00 |
| updated_at | 2026-01-22 08:26:36.015427+00 |
| description | A pure Rust library for parsing CZDB-format IP databases. |
| homepage | |
| repository | https://github.com/AldenClark/czdb-rs |
| max_upload_size | |
| id | 1455686 |
| size | 61,658 |
A Rust library for parsing and searching CZDB-format IP geolocation databases.
CzdbDisk), mmap (CzdbMmap), and in-memory (CzdbMemory).CzdbDisk): lowest memory, higher latency; good for low QPS or constrained environments.CzdbMmap, feature mmap): OS page cache, good throughput with low memory footprint.CzdbMemory): prebuilt index + string pool, best latency/QPS; highest memory usage.use czdb::CzdbDisk;
use std::net::IpAddr;
let mut db = CzdbDisk::open("path/to/your.czdb", "your_base64_key")?;
let ip: IpAddr = "8.8.8.8".parse().unwrap();
let res = db.search(ip);
use czdb::CzdbMmap;
use std::net::IpAddr;
let db = CzdbMmap::open("path/to/your.czdb", "your_base64_key")?;
let ip: IpAddr = "8.8.8.8".parse().unwrap();
let res = db.search(ip);
use czdb::CzdbMemory;
use std::net::IpAddr;
let db = CzdbMemory::open("path/to/your.czdb", "your_base64_key")?;
let ip: IpAddr = "8.8.8.8".parse().unwrap();
let res = db.search(ip);
use czdb::CzdbMemory;
use std::net::IpAddr;
let db = CzdbMemory::open("path/to/your.czdb", "your_base64_key")?;
let ips: Vec<IpAddr> = vec!["1.1.1.1".parse().unwrap(), "8.8.8.8".parse().unwrap()];
let res = db.search_many(&ips);
use czdb::CzdbMemory;
use std::net::IpAddr;
let db = CzdbMemory::open("path/to/your.czdb", "your_base64_key")?;
let ips: Vec<IpAddr> = (0..10000)
.map(|i| IpAddr::from([1, 1, 1, (i % 255) as u8]))
.collect();
let res = db.search_many_scan(&ips);
mmap: enable CzdbMmapcargo doc --all-features.这是一个用于解析与查询 CZDB 格式 IP 地理位置数据库的 Rust 库。
CzdbDisk)、mmap(CzdbMmap)、内存(CzdbMemory)。CzdbDisk):内存占用最低,延迟较高;适合低 QPS。CzdbMmap,mmap feature):利用系统页缓存,吞吐较好且内存占用低。CzdbMemory):预构建索引 + 字符串池,延迟最低;内存占用最高。use czdb::CzdbDisk;
use std::net::IpAddr;
let mut db = CzdbDisk::open("path/to/your.czdb", "your_base64_key")?;
let ip: IpAddr = "8.8.8.8".parse().unwrap();
let res = db.search(ip);
use czdb::CzdbMmap;
use std::net::IpAddr;
let db = CzdbMmap::open("path/to/your.czdb", "your_base64_key")?;
let ip: IpAddr = "8.8.8.8".parse().unwrap();
let res = db.search(ip);
use czdb::CzdbMemory;
use std::net::IpAddr;
let db = CzdbMemory::open("path/to/your.czdb", "your_base64_key")?;
let ip: IpAddr = "8.8.8.8".parse().unwrap();
let res = db.search(ip);
use czdb::CzdbMemory;
use std::net::IpAddr;
let db = CzdbMemory::open("path/to/your.czdb", "your_base64_key")?;
let ips: Vec<IpAddr> = vec!["1.1.1.1".parse().unwrap(), "8.8.8.8".parse().unwrap()];
let res = db.search_many(&ips);
use czdb::CzdbMemory;
use std::net::IpAddr;
let db = CzdbMemory::open("path/to/your.czdb", "your_base64_key")?;
let ips: Vec<IpAddr> = (0..10000)
.map(|i| IpAddr::from([1, 1, 1, (i % 255) as u8]))
.collect();
let res = db.search_many_scan(&ips);
mmap:启用 CzdbMmapcargo doc --all-features。