Some of the early versions used libgeoip, but the database has changed many times over time; it started with MaxMind data, then switched to ipinfodb.com, then ip2location.com came into the mix, and currently is back to using MaxMind again with a few tweaks. The idea is to be free to change to whatever is more suitable whenever is necessary... Redis was initially used in the Python version (twisted+cyclone) to share usage quotas between multiple instances (one per cpu), and ended up in the Go version just because; actually, it could use a map or something, but I'd have to implement the ttl part... In other words, it's mostly for historical reasons.
Comments
Some of the early versions used libgeoip, but the database has changed many times over time; it started with MaxMind data, then switched to ipinfodb.com, then ip2location.com came into the mix, and currently is back to using MaxMind again with a few tweaks. The idea is to be free to change to whatever is more suitable whenever is necessary... Redis was initially used in the Python version (twisted+cyclone) to share usage quotas between multiple instances (one per cpu), and ended up in the Go version just because; actually, it could use a map or something, but I'd have to implement the ttl part... In other words, it's mostly for historical reasons.