【发布时间】:2016-04-07 18:12:50
【问题描述】:
我们的数据库中有一个表,其中包含城市的静态 IP 范围及其 IP 地址。它看起来像:
IP-TO、IP-FROM、城市
100、110、A
111、168、B
...
965、1000、Z
我已经提到了样本数据。实际数据非常庞大,表中有近 64k 行。
对于我们网站上的每个用户,我们通过在 sql express 服务器上执行 sql 查询,根据他们的 IP 地址确定他们的城市。
由于数据是静态的,例如IP在100到110范围内的每个用户都属于A市,我们每次都不必要地访问数据库。
我们正在考虑缓存每个唯一的 ip 访问。例如: IP-100 映射到 A IP-101 映射到 A ... IP-110 映射到 A
但这会在 memcache 中创建 64k 个键,我觉得当我们知道范围时,存储多个具有相同值的键是没有意义的。
我们能否以某种更好的方式做到这一点,即通过最小的内存缓存键或完全使用不同的方法?
【问题讨论】:
-
在示例中,我看到每个 IP 范围有 10 个差异。范围是否始终具有恒定值?
-
没有。这只是样本数据。不像那样。为了更清楚,我会修改它。