解决方案 »

  1.   

    你是要把整个文件存缓存里呢?还是只量查询的结果存缓存里呢?
    如果是整个文件存缓存里,一样要消耗内存,除非你的缓存服务器与Web服务器不是同台,且不差内存。
      

  2.   

    先把数据库内容读出来,用数组保存,然后json_encode后写入memcache。
    使用时,从memcache中读出来,然后json_decode获取数据。
    <?php
    $qqip = array(
        '192.168.1.1' => 'china',
        '192.168.1.2' => 'usa'
    );$memcache_obj  = new  Memcache ;
    $memcache_obj->connect ('localhost',  11211 );//写入
    $memcache_obj->set('qqip', json_encode($qqip), MEMCACHE_COMPRESSED);
    // 读取
    $ipstr = $memcache_obj->get('qqip');
    $ipdata = json_decode($ipstr,true);echo $ipdata['192.168.1.1'];
    ?>
      

  3.   

    @fdipzone 不行的,QQwry.dat里面的数据有20w条左右,而且 存的是IP区间,
      

  4.   

    @李睿_Lee 我是想把数据写进内存里,然后把要解析的IP地址在memcached里面匹配,  这样占用的内存就小的多了
      

  5.   


    你们都错误了!思路应该这样来想,既然自己的程序计算费时间,那么就引用外部的API接口
    CURL获取站外的IP查询,现在很多这样的服务器的。这样岂不一举两得,而且都不用自己维护。
      

  6.   

    就是不想用其他API接口,公司内部要求开放独立的IP服务系统。
      

  7.   

    将数据文件 内容读出来入库 把工作交给MYSQL 。建立一个独立的IP查询服务器 配置不需要多好,根据实际情况做硬件投资即可。
      

  8.   

    1000个用户来访问就9G了
    这符合实际情况吗?
    一个公司内部网络会设置 web 服务器并发数大于1000?您知道维护这样的配置要花费多少银子吗?
    一个 QQWry.dat 大致9M不到点,你是为查询一个 ip 地址,就将文件全部加载到内存吗?
      

  9.   

    如果QQWry.dat全部压缩存入memcache,估计也会超过1M,memcache最大key value存储也才1M.
      

  10.   

    與其寫入memcached還不如寫入redis這種nosql里
    速度差不多,但是佔用內存小多了.