各种MaxMind GeoIP缓存模式的含义是什么?

时间:2013-08-26 20:29:30

标签: geoip

我正在尝试使用MaxMind GeoIP数据库,我注意到C API提供了许多不同的缓存模式作为GeoIP_open初始化调用的标志。

  • GEOIP_MEMORY_CACHE
  • GEOIP_CHECK_CACHE
  • GEOIP_INDEX_CACHE
  • GEOIP_MMAP_CACHE

这些是标志位,所以你可以提供它们的任何一组,但是没有关于这些标志意味着什么或它们做什么,或者(或许最重要的)它们如何相互作用的文档。

benchmarks page表示GEOIP_MEMORY_CACHE使GEOIP_CHECK_CACHE更快,{{1}}使其变慢,但没有迹象表明您为什么要使用(或不使用)任何这些标志

1 个答案:

答案 0 :(得分:4)

他们的github页面描述了这些缓存的目的。

GEOIP_STANDARD - Read database from file system. This uses the least memory.
GEOIP_MEMORY_CACHE - Load database into memory. Provides faster performance but uses more memory.
GEOIP_CHECK_CACHE - Check for updated database. If database has been updated, reload file handle and/or memory cache.
GEOIP_INDEX_CACHE - Cache only the the most frequently accessed index portion of the database, resulting in faster lookups than GEOIP_STANDARD, but less memory usage than GEOIP_MEMORY_CACHE. This is useful for larger databases such as GeoIP Organization and GeoIP City. Note: for GeoIP Country, Region and Netspeed databases, GEOIP_INDEX_CACHE is equivalent to GEOIP_MEMORY_CACHE.
GEOIP_MMAP_CACHE - Load database into mmap shared memory. MMAP is not available for 32bit Windows.

可以使用位运算符组合这些选项。例如,您可以通过调用以下方法同时使用GEOIP_MEMORY_CACHE和GEOIP_CHECK_CACHE: GeoIP_open(“/ path / to / GeoIP.dat”,GEOIP_MEMORY_CACHE | GEOIP_CHECK_CACHE);

Click to know more information