当前位置:首页 > PHP教程 > php高级应用 > 列表

PHP 扩展Memcached命令用法实例总结

发布:smiling 来源: PHP粉丝网  添加日期:2022-03-12 14:00:14 浏览: 评论:0 

本文实例讲述了PHP 扩展Memcached命令用法,分享给大家供大家参考,具体如下:

传送门:http://www.php.net/manual/zh/book.memcached.php

windows 下没有memcached的扩展,只有memcache的扩展,亲测,两者之间还是有很大差别的,所以建议还是在linux做。

  1. <?php 
  2.   $mem = new Memcached(); 
  3.  
  4.   //添加一台服务器资源 
  5.   $mem->addServer('127.0.0.1''11211'); 
  6.  
  7.   //添加多台,分布式存储,第三个参数为权重值 
  8.   /* 
  9.       $servers = array( 
  10.       array('127.0.0.1', 11211, 33), 
  11.       array('127.0.0.2', 11211, 67), 
  12.     ); 
  13.     $res = $mem->addServers($servers); 
  14.  
  15.   */ 
  16.  
  17.   //设置:键 值 过期时间(秒) 
  18.   $mem->set('name''huangyuxin', 5); 
  19.  
  20.   //注意:最大生命周期可设置为60*60*24*30 三十天的时间  
  21.   //再往后的话要加上时间戳 time()+60*60*24*31(三十一天) 
  22.  
  23.   //获取值 
  24.   $value = $mem->get('name'); 
  25.  
  26.   //添加值,如果存在此键,false 
  27.   $result = $mem->add('name','zhangsan'); 
  28.  
  29.   //追加: 键 值 ,追加在一个已经存在的值得后面,不存在也为false 
  30.   //setOption 这一句必须加上,不然追加不上 
  31.   //prepend 前面追加 
  32.   //如果Memcached::OPT_COMPRESSION常量开启,这个操作会失败,并引发一个警告,因为向压缩数据 后追加数据可能会导致解压不了。 
  33.   $mem->setOption(Memcached::OPT_COMPRESSION, false); 
  34.   $mem->append('name','haha'); 
  35.   $value = $mem->get('name'); 
  36.  
  37.   //这个是减掉元素的值,两个参数,第二个参数决定减掉数值几,默认是 1 ,increment 是加 
  38.   $mem->set('age', 12, 30); 
  39.   $mem->decrement('age'); 
  40.   $mem->decrement('age',2); 
  41.   $value = $mem->get('age'); 
  42.  
  43.   //删除元素 
  44.   $mem->delete('age'); 
  45.   $mem->delete('age',60); 
  46.   /* 
  47.   注意: 
  48.     服务端在这段时间拒绝对这个key的add和replace命令.  
  49.     由于这个时间段的存在, 元素被放入一个删除队列 
  50.     表明它不可以通过get命令获取到值 
  51.     但是同时 add和replace命令也从服务端内存删除 
  52.   (表明元素会被立即删除并且之后对这个 key的存储命令也会成功) 
  53. */ 
  54.  
  55.   //删除多个 
  56.   $mem->add('age', 12, 60); 
  57.   $mem->add('name''huangyuxin', 60); 
  58.   $res = $mem->deleteMulti(array('age','name')); 
  59.  
  60.   //作废 :flush不会 真正的释放已有元素的内存, 而是逐渐的存入新元素重用那些内存。 
  61.   $mem->flush(10);//10秒内清除元素 
  62.  
  63.   //获取所有键 
  64.   $mem->getAllKeys(); 
  65.  
  66.   /* 
  67.     Memcached::getDelayed()向Memcached服务端发出一个检索 
  68.     keys指定的多个 key对应元素的请求。这个方法不会等待响应而 
  69.     是立即返回。当你需要收集元素值时, 调Memcached::fetch() 
  70.     或 Memcached::fetchAll()。如果with_cas设置为true,会 
  71.     同时请求每个元素的CAS标记。 
  72.   */ 
  73.   $m->set('int', 99); 
  74.   $m->set('array'array(11, 12)); 
  75.   $m->getDelayed(array('int''array'), true); 
  76.   var_dump($m->fetchAll()); 
  77.  
  78.   //获取多个值的信息 
  79.   $mem->set('age', 12, 60); 
  80.   $mem->set('name''huangyuxin', 60); 
  81.   $res = $mem->getMulti(array('age''name')); 
  82.  
  83.   //设置多个键 
  84.   $items = array
  85.   'key1' => 'value1'
  86.   'key2' => 'value2'
  87.   'key3' => 'value3'
  88. ); 
  89.   $mem->setMulti($items); 
  90.   $res = $mem->get('key1');//value 
  91.  
  92.   //返回系统常量 
  93.   var_dump($mem->getOption(Memcached::OPT_COMPRESSION)); 
  94.  
  95.   //返回最后一次操作的结果描述消息 
  96.   $mem->add('a''bar'); // first time should succeed 
  97.   echo $mem->getResultMessage(), "\n"//SUCCESS 
  98.  
  99.   //查看此key在哪个服务器上 
  100.   $mem->add('a''bar'); // first time should succeed 
  101.   $res = $mem->getServerByKey('a'); 
  102.   //array(3) { ["host"]=> string(9) "127.0.0.1" ["port"]=> int(11211) ["weight"]=> int(0) }  
  103.  
  104.   //返回服务器列表 
  105.   var_dump($mem->getServerList()); 
  106.  
  107.   //返回服务器状态 
  108.   var_dump($mem->getServerList()); 
  109.  
  110.   //服务器版本 
  111.   print_r($mem->getVersion()); 
  112.  
  113.   //判断是否是持久链接 
  114.   $res = $mem->isPersistent(); 
  115.  
  116.   //Memcached::replace()和Memcached::set()类似,但是如果 服务端不存在key, 操作将失败。 
  117.   $m->set('hh''aaaa'); 
  118.   $m->replace('hh''bbbb'); 
  119.   $res = $m->get('hh'); 
  120.  
  121.   //删除从已知的服务器列表中的所有缓存服务器,重置回空。 
  122.   $mem->resetServerList(); 
  123.  
  124.   //对某一key重新设置生命周期 
  125.   $m->set('aaaa''aaaa', 600); 
  126.   $m->touch('aaaa', 5); 
  127.   $value$m->get('aaaa'); 
  128.  
  129.   //关闭打开的链接 
  130.   $m->quit(); 
  131.  
  132.   var_dump($value); 

以下后缀为ByKey一般为多台Memcached Server使用,掌握以上的命令,下面基本都会用了。

  1. touch->touchByKey 
  2. setMulti->setMultiByKey 
  3. getMulti->getMultiBykey 
  4. replace->replaceByKey 
  5. append->appendByKey 
  6. prepend->prependByKey 
  7. getServerByKey 
  8. getdelay->getDelayedByKey 
  9. increment->incrementByKey 
  10. decrement->decrementByKey 
  11. add->addByKey 
  12. get->getByKey 
  13. delete->deleteMultiByKey 
  14.  
  15. $m->addByKey('指定服务器','键',"值")

Tags: PHP扩展命令 Memcached

分享到: