求解判断memcache的key是否使用

解决方案 »

  1.   

    $val = $memcache->get($key);
    if(is_null($val)){
       echo "未设置";
    }
      

  2.   

    如果要严谨的判断,可以这样写,只有key被delete才不存在,不用理会value$m = new Memcache;
    $m->connect('localhost', 11211);// 有值
    $m->set('foo', 100);
    var_dump($m->replace('foo', $m->get('foo'))); // true// 值为false
    $m->set('foo', false);
    var_dump($m->replace('foo', $m->get('foo'))); // true// 值为null
    $m->set('foo', null);
    var_dump($m->replace('foo', $m->get('foo'))); // true// 值被delete
    $m->delete('foo');
    var_dump($m->replace('foo', $m->get('foo'))); // false
      

  3.   

    开列 Memcache 的键名
    $mem = new Memcache;
    $mem->connect('localhost', 11211);
    //$mem->set('m1', 'a');printf("服务器\t\t键名\t内存\t创建时间\n");
    foreach($mem->getExtendedStats ('items') as $srv=>$items) {
      foreach($items['items'] as $key=>$value) {
        foreach($mem->getExtendedStats ("cachedump", $key, 0) as $vars) {
          foreach($vars as $k=>$v)
            printf("%s\t%s\t%s\t%s\n", $srv, $k, $v[0], date('Y-m-d H:i:s', $v[1]));
        }
      }
    }
    服务器      键名   内存 创建时间
    localhost:11211 m1 1 2015-10-16 14:27:13
    localhost:11211 my 4 2015-10-16 09:48:00
    localhost:11211 key   66   2015-10-16 09:48:00