zoukankan      html  css  js  c++  java
  • 转:php 获取memcache所有key

    文章出处

     在php提供的用于与memcached交互的扩展模块中有memcached与memcache,前者提供方法getAllKeys用于遍历所有Memcached服务器上的key,但是并不保证原子操作,而后者却没有提供任何方法,虽然在PHP官方
    文档中有人给出使用方法getExtendedStats来间接获取Memcached服务器上的所有key,但是给出的代码是有不少坑的,如果拿来就用,对于cluster的memcached服务器而言,有些问题就需要指出来。
           下面将给出官方文档中的代码,并指出可能面临的问题,代码如下:
    <?php
    /**
    * Function to get all memcache keys
    * @author Manish Patel
    * @Created:  28-May-2010
    */
    function getMemcacheKeys() {
     
    $memcache = new Memcache;
    $memcache->connect('127.0.0.1', 11211) or die ("Could not connect to memcache server");
     
    $list = array();
    $allSlabs = $memcache->getExtendedStats('slabs');
    $items = $memcache->getExtendedStats('items');
    foreach($allSlabs as $server => $slabs) {
       foreach($slabs AS $slabId => $slabMeta) {
          $cdump = $memcache->getExtendedStats('cachedump',(int)$slabId);
          foreach($cdump AS $keys => $arrVal) {
             foreach($arrVal AS $k => $v){
               echo $k ."";
             }
          }
        }
    }//EO getMemcacheKeys() ?>
           在上述代码中,如果用于获取单个memcached服务器上的key,是不存在任何问题,但是获取连接池中的多个memcached所有key就存在问题,会发现打印出重复的key,问题就在于当使用getExtendedStats用去特定$slabID
    上的信息时,返回的是连接池中所有的服务器上的特定$slabId 的存储的keys信息。当$server为"127.0.0.1:11214"且$slabId为0将变量$cdump的信息打印出如下所示array(2) {
      ["127.0.0.1:11214"]=>
      array(1) {
        ["course_schools__??¨é?¨"]=>
        array(2) {
          [0]=>
          string(1) "0" [1]=>
          string(10) "12" }
      }
      ["127.0.0.1:11216"]=>
      array(1) {
        ["monitorMemcache"]=>
        array(2) {
          [0]=>
          string(2) "10" [1]=>
          string(10) "12" }
      }
    }
    当$server为"127.0.0.1:11216"且$slabId为0将变量$cdump的信息打印出如下所示array(2) {
      ["127.0.0.1:11214"]=>
      array(1) {
        ["course_schools__??¨é?¨"]=>
        array(2) {
          [0]=>
          string(1) "0" [1]=>
          string(10) "12" }
      }
      ["127.0.0.1:11216"]=>
      array(1) {
        ["monitorMemcache"]=>
        array(2) {
          [0]=>
          string(2) "10" [1]=>
          string(10) "12" }
      }
    }
  • 相关阅读:
    岗位要求与人才匹配
    http://blog.csdn.net/wujunokay/article/details/44783383
    好单位与坏单位
    工作那些事(三十四)杂记
    工作那些事(三十三)面试官的感想和建议
    工作那些事(三十二)由孙悟空的两个故事谈个人与团队
    工作那些事(三十一)如何带好一个项目团队
    工作那些事(三十)如何提升个人能力
    工作那些事(二十九)团队建设和人才招聘
    工作那些事(二十八)项目管理模式:项目型、职能型、矩阵型
  • 原文地址:https://www.cnblogs.com/zjfblog/p/6401656.html
Copyright © 2011-2022 走看看