MaxMind:将 GeoIP2 mmdb 加载到内存中以便快速读取

Posted

技术标签:

【中文标题】MaxMind:将 GeoIP2 mmdb 加载到内存中以便快速读取【英文标题】:MaxMind: loading GeoIP2 mmdb into memory for fast read 【发布时间】:2016-04-09 18:27:03 【问题描述】:

我正在使用 MaxMind 的 GeoIP2 来获取 IP 地址的地理信息。在我的 Java Web 应用程序中,

DatabaseReader reader = new DatabaseReader.Builder(new File("C:\GeoLite2-City.mmdb").withCache(new CHMCache()).build();

我希望将整个文件加载到内存中以便高效/快速读取。

上面显示的方式是使用 mmdb 数据库最有效/最快的方式吗?

【问题讨论】:

【参考方案1】:

您粘贴的代码将对文件进行内存映射并使用数据缓存。它应该是高效的,但它不会将整个数据库加载到内存中。如果你想这样做,你需要使用 fileMode builder 选项加载数据库,例如:

DatabaseReader reader = new DatabaseReader
    .Builder(new File("C:\GeoLite2-City.mmdb")
    .fileMode(com.maxmind.db.Reader.FileMode.MEMORY)
    .withCache(new CHMCache())
    .build();

但是,在大多数情况下,您可能不会看到此文件与内存映射文件之间的性能差异。

【讨论】:

感谢您的信息!

以上是关于MaxMind:将 GeoIP2 mmdb 加载到内存中以便快速读取的主要内容,如果未能解决你的问题,请参考以下文章

给定城市时查询国家/地区的 maxmind mmdb

GeoIP2 MaxMind pom 和我本地的有啥区别?

通过 hive 访问 maxmind 的 GeoIP-country.mmdb 数据库时出现异常

导入 com.maxmind.geoip2 无法解析

在 mmdb 文件操作之间更新 Maxmind DatabaseReader

基于美国州的重定向页面,使用 Maxmind geoip2 JS