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

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

发布:smiling 来源: PHP粉丝网  添加日期:2022-07-08 11:14:05 浏览: 评论:0 

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

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

  1. <?php 
  2.  
  3.   $mem = new Memcached(); 
  4.  
  5.  
  6.  
  7.   //添加一台服务器资源 
  8.  
  9.   $mem->addServer('127.0.0.1''11211'); 
  10.  
  11.  
  12.  
  13.   //添加多台,分布式存储,第三个参数为权重值 
  14.  
  15.   /* 
  16.  
  17.       $servers = array( 
  18.  
  19.       array('127.0.0.1', 11211, 33), 
  20.  
  21.       array('127.0.0.2', 11211, 67), 
  22.  
  23.     ); 
  24.  
  25.     $res = $mem->addServers($servers); 
  26.  
  27.  
  28.  
  29.   */ 
  30.  
  31.  
  32.  
  33.   //设置:键 值 过期时间(秒) 
  34.  
  35.   $mem->set('name''huangyuxin', 5); 
  36.  
  37.  
  38.  
  39.   //注意:最大生命周期可设置为60*60*24*30 三十天的时间  
  40.  
  41.   //再往后的话要加上时间戳 time()+60*60*24*31(三十一天) 
  42.  
  43.  
  44.  
  45.   //获取值 
  46.  
  47.   $value = $mem->get('name'); 
  48.  
  49.  
  50.  
  51.   //添加值,如果存在此键,false 
  52.  
  53.   $result = $mem->add('name','zhangsan'); 
  54.  
  55.  
  56.  
  57.   //追加: 键 值 ,追加在一个已经存在的值得后面,不存在也为false 
  58.  
  59.   //setOption 这一句必须加上,不然追加不上 
  60.  
  61.   //prepend 前面追加 
  62.  
  63.   //如果Memcached::OPT_COMPRESSION常量开启,这个操作会失败,并引发一个警告,因为向压缩数据 后追加数据可能会导致解压不了。 
  64.  
  65.   $mem->setOption(Memcached::OPT_COMPRESSION, false); 
  66.  
  67.   $mem->append('name','haha'); 
  68.  
  69.   $value = $mem->get('name'); 
  70.  
  71.  
  72.  
  73.   //这个是减掉元素的值,两个参数,第二个参数决定减掉数值几,默认是 1 ,increment 是加 
  74.  
  75.   $mem->set('age', 12, 30); 
  76.  
  77.   $mem->decrement('age'); 
  78.  
  79.   $mem->decrement('age',2); 
  80.  
  81.   $value = $mem->get('age'); 
  82.  
  83.  
  84.  
  85.   //删除元素 
  86.  
  87.   $mem->delete('age'); 
  88.  
  89.   $mem->delete('age',60); 
  90.  
  91.   /* 
  92.  
  93.   注意: 
  94.  
  95.     服务端在这段时间拒绝对这个key的add和replace命令.  
  96.  
  97.     由于这个时间段的存在, 元素被放入一个删除队列 
  98.  
  99.     表明它不可以通过get命令获取到值 
  100.  
  101.     但是同时 add和replace命令也从服务端内存删除 
  102.  
  103.   (表明元素会被立即删除并且之后对这个 key的存储命令也会成功) 
  104.  
  105. */ 
  106.  
  107.  
  108.  
  109.   //删除多个 
  110.  
  111.   $mem->add('age', 12, 60); 
  112.  
  113.   $mem->add('name''huangyuxin', 60); 
  114.  
  115.   $res = $mem->deleteMulti(array('age','name')); 
  116.  
  117.  
  118.  
  119.   //作废 :flush不会 真正的释放已有元素的内存, 而是逐渐的存入新元素重用那些内存。 
  120.  
  121.   $mem->flush(10);//10秒内清除元素 
  122.  
  123.  
  124.  
  125.   //获取所有键 
  126.  
  127.   $mem->getAllKeys(); 
  128.  
  129.  
  130.  
  131.   /* 
  132.  
  133.     Memcached::getDelayed()向Memcached服务端发出一个检索 
  134.  
  135.     keys指定的多个 key对应元素的请求。这个方法不会等待响应而 
  136.  
  137.     是立即返回。当你需要收集元素值时, 调Memcached::fetch() 
  138.  
  139.     或 Memcached::fetchAll()。如果with_cas设置为true,会 
  140.  
  141.     同时请求每个元素的CAS标记。 
  142.  
  143.   */ 
  144.  
  145.   $m->set('int', 99); 
  146.  
  147.   $m->set('array'array(11, 12)); 
  148.  
  149.   $m->getDelayed(array('int''array'), true); 
  150.  
  151.   var_dump($m->fetchAll()); 
  152.  
  153.  
  154.  
  155.   //获取多个值的信息 
  156.  
  157.   $mem->set('age', 12, 60); 
  158.  
  159.   $mem->set('name''huangyuxin', 60); 
  160.  
  161.   $res = $mem->getMulti(array('age''name')); 
  162.  
  163.  
  164.  
  165.   //设置多个键 
  166.  
  167.   $items = array
  168.  
  169.   'key1' => 'value1'
  170.  
  171.   'key2' => 'value2'
  172.  
  173.   'key3' => 'value3'
  174.  
  175. ); 
  176.  
  177.   $mem->setMulti($items); 
  178.  
  179.   $res = $mem->get('key1');//value 
  180.  
  181.  
  182.  
  183.   //返回系统常量 
  184.  
  185.   var_dump($mem->getOption(Memcached::OPT_COMPRESSION)); 
  186.  
  187.  
  188.  
  189.   //返回最后一次操作的结果描述消息 
  190.  
  191.   $mem->add('a''bar'); // first time should succeed 
  192.  
  193.   echo $mem->getResultMessage(), "\n"//SUCCESS 
  194.  
  195.  
  196.  
  197.   //查看此key在哪个服务器上 
  198.  
  199.   $mem->add('a''bar'); // first time should succeed 
  200.  
  201.   $res = $mem->getServerByKey('a'); 
  202.  
  203.   //array(3) { ["host"]=> string(9) "127.0.0.1" ["port"]=> int(11211) ["weight"]=> int(0) }  
  204.  
  205.  
  206.  
  207.   //返回服务器列表 
  208.  
  209.   var_dump($mem->getServerList()); 
  210.  
  211.  
  212.  
  213.   //返回服务器状态 
  214.  
  215.   var_dump($mem->getServerList()); 
  216.  
  217.  
  218.  
  219.   //服务器版本 
  220.  
  221.   print_r($mem->getVersion()); 
  222.  
  223.  
  224.  
  225.   //判断是否是持久链接 
  226.  
  227.   $res = $mem->isPersistent(); 
  228.  
  229.  
  230.  
  231.   //Memcached::replace()和Memcached::set()类似,但是如果 服务端不存在key, 操作将失败。 
  232.  
  233.   $m->set('hh''aaaa'); 
  234.  
  235.   $m->replace('hh''bbbb'); 
  236.  
  237.   $res = $m->get('hh'); 
  238.  
  239.  
  240.  
  241.   //删除从已知的服务器列表中的所有缓存服务器,重置回空。 
  242.  
  243.   $mem->resetServerList(); 
  244.  
  245.  
  246.  
  247.   //对某一key重新设置生命周期 
  248.  
  249.   $m->set('aaaa''aaaa', 600); 
  250.  
  251.   $m->touch('aaaa', 5); 
  252.  
  253.   $value$m->get('aaaa'); 
  254.  
  255.  
  256.  
  257.   //关闭打开的链接 
  258.  
  259.   $m->quit(); 
  260.  
  261.  
  262.  
  263.   var_dump($value); 

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

touch->touchByKey

setMulti->setMultiByKey

getMulti->getMultiBykey

replace->replaceByKey

append->appendByKey

prepend->prependByKey

getServerByKey

getdelay->getDelayedByKey

increment->incrementByKey

decrement->decrementByKey

add->addByKey

get->getByKey

delete->deleteMultiByKey

$m->addByKey('指定服务器','键',"值")

Tags: Memcached

分享到: