暂无个人介绍
2020年01月
贴上代码,查询了IP之后放到缓存里面。
/// <summary>
/// 本地缓存库
/// </summary>
private static Dictionary<string, CityInfo> addressCache = new Dictionary<string, CityInfo>();
public static CityInfo GetAddress(string ip)
{
if (!regex.IsMatch(ip) || ip == NO_IP) return ip ?? string.Empty;
if (addressCache.ContainsKey(ip)) return addressCache[ip];
lock (addressCache)
{
if (!File.Exists(IPDATA_PATH)) return new CityInfo(); ;
City db = new City(IPDATA_PATH);
CityInfo info = db.findInfo(ip, "CN");
if (!addressCache.ContainsKey(ip)) addressCache.Add(ip, info);
return info;
}
}
另外,IP库如果只是要精确到城市,可以不用数据库,很多第三方的IP库文件数据库可以进行查询,把IP库加载进入内存(仅十几M而已),会减少很多不必要的IO开销。
我也遇到过这样的事情,在阿里云的ECS后台点击强制重启导致的。 之后无法解决,选择重新安装系统解决。