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

时间:2016-04-09 18:27:03

标签: maxmind

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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