2013-08-26 1 views
5

Я пытаюсь использовать базу данных MaxMind GeoIP, и я замечаю, что C API предоставляет кучу различных режимов кэширования в качестве флагов для вызова инициализации GeoIP_open.Что делают/означают различные режимы кэширования MaxMind GeoIP?

  • GEOIP_MEMORY_CACHE
  • GEOIP_CHECK_CACHE
  • GEOIP_INDEX_CACHE
  • GEOIP_MMAP_CACHE

эти биты флага, так что вы можете обеспечить любой набор из них, но нет никакой документации относительно того, что означают эти флаги или что они делают или (возможно, самое главное), как они взаимодействуют.

benchmarks page указывает, что GEOIP_MEMORY_CACHE делает его быстрее, в то время как GEOIP_CHECK_CACHE делает это медленнее, но нет никаких указаний на то, почему вы хотели бы использовать (или не использовать) любой из этих флагов.

ответ

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 («/ путь/в/GeoIP.dat», GEOIP_MEMORY_CACHE | GEOIP_CHECK_CACHE);

Click to know more information