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


Posted in PHP onJune 04, 2020

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

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

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

<?php
  $mem = new Memcached();

  //添加一台服务器资源
  $mem->addServer('127.0.0.1', '11211');

  //添加多台,分布式存储,第三个参数为权重值
  /*
      $servers = array(
      array('127.0.0.1', 11211, 33),
      array('127.0.0.2', 11211, 67),
    );
    $res = $mem->addServers($servers);

  */

  //设置:键 值 过期时间(秒)
  $mem->set('name', 'huangyuxin', 5);

  //注意:最大生命周期可设置为60*60*24*30 三十天的时间 
  //再往后的话要加上时间戳 time()+60*60*24*31(三十一天)

  //获取值
  $value = $mem->get('name');

  //添加值,如果存在此键,false
  $result = $mem->add('name','zhangsan');

  //追加: 键 值 ,追加在一个已经存在的值得后面,不存在也为false
  //setOption 这一句必须加上,不然追加不上
  //prepend 前面追加
  //如果Memcached::OPT_COMPRESSION常量开启,这个操作会失败,并引发一个警告,因为向压缩数据 后追加数据可能会导致解压不了。
  $mem->setOption(Memcached::OPT_COMPRESSION, false);
  $mem->append('name','haha');
  $value = $mem->get('name');

  //这个是减掉元素的值,两个参数,第二个参数决定减掉数值几,默认是 1 ,increment 是加
  $mem->set('age', 12, 30);
  $mem->decrement('age');
  $mem->decrement('age',2);
  $value = $mem->get('age');

  //删除元素
  $mem->delete('age');
  $mem->delete('age',60);
  /*
  注意:
    服务端在这段时间拒绝对这个key的add和replace命令. 
    由于这个时间段的存在, 元素被放入一个删除队列
    表明它不可以通过get命令获取到值
    但是同时 add和replace命令也从服务端内存删除
  (表明元素会被立即删除并且之后对这个 key的存储命令也会成功)
*/

  //删除多个
  $mem->add('age', 12, 60);
  $mem->add('name', 'huangyuxin', 60);
  $res = $mem->deleteMulti(array('age','name'));

  //作废 :flush不会 真正的释放已有元素的内存, 而是逐渐的存入新元素重用那些内存。
  $mem->flush(10);//10秒内清除元素

  //获取所有键
  $mem->getAllKeys();

  /*
    Memcached::getDelayed()向Memcached服务端发出一个检索
    keys指定的多个 key对应元素的请求。这个方法不会等待响应而
    是立即返回。当你需要收集元素值时, 调Memcached::fetch()
    或 Memcached::fetchAll()。如果with_cas设置为true,会
    同时请求每个元素的CAS标记。
  */
  $m->set('int', 99);
  $m->set('array', array(11, 12));
  $m->getDelayed(array('int', 'array'), true);
  var_dump($m->fetchAll());

  //获取多个值的信息
  $mem->set('age', 12, 60);
  $mem->set('name', 'huangyuxin', 60);
  $res = $mem->getMulti(array('age', 'name'));

  //设置多个键
  $items = array(
  'key1' => 'value1',
  'key2' => 'value2',
  'key3' => 'value3',
);
  $mem->setMulti($items);
  $res = $mem->get('key1');//value

  //返回系统常量
  var_dump($mem->getOption(Memcached::OPT_COMPRESSION));

  //返回最后一次操作的结果描述消息
  $mem->add('a', 'bar'); // first time should succeed
  echo $mem->getResultMessage(), "\n"; //SUCCESS

  //查看此key在哪个服务器上
  $mem->add('a', 'bar'); // first time should succeed
  $res = $mem->getServerByKey('a');
  //array(3) { ["host"]=> string(9) "127.0.0.1" ["port"]=> int(11211) ["weight"]=> int(0) } 

  //返回服务器列表
  var_dump($mem->getServerList());

  //返回服务器状态
  var_dump($mem->getServerList());

  //服务器版本
  print_r($mem->getVersion());

  //判断是否是持久链接
  $res = $mem->isPersistent();

  //Memcached::replace()和Memcached::set()类似,但是如果 服务端不存在key, 操作将失败。
  $m->set('hh', 'aaaa');
  $m->replace('hh', 'bbbb');
  $res = $m->get('hh');

  //删除从已知的服务器列表中的所有缓存服务器,重置回空。
  $mem->resetServerList();

  //对某一key重新设置生命周期
  $m->set('aaaa', 'aaaa', 600);
  $m->touch('aaaa', 5);
  $value= $m->get('aaaa');

  //关闭打开的链接
  $m->quit();

  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('指定服务器','键',"值")

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php的正则处理函数总结分析
Jun 20 PHP
深入分析php中接口与抽象类的区别
Jun 08 PHP
探讨:如何使用PhpDocumentor生成文档
Jun 25 PHP
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
Jul 15 PHP
php常用的安全过滤函数集锦
Oct 09 PHP
Yii使用ajax验证显示错误messagebox的解决方法
Dec 03 PHP
smarty模板引擎基础知识入门
Mar 30 PHP
PHP中使用Memache作为进程锁的操作类分享
Mar 30 PHP
浅谈PHP Cookie处理函数
Jun 10 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
May 20 PHP
浅谈Laravel核心解读之Console内核
Dec 02 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
Oct 22 PHP
PHP正则表达式函数preg_replace用法实例分析
Jun 04 #PHP
PHP常用字符串函数用法实例总结
Jun 04 #PHP
TP3.2框架分页相关实现方法分析
Jun 03 #PHP
PHP Trait功能与用法实例分析
Jun 03 #PHP
PHP时间相关常用函数用法示例
Jun 03 #PHP
ThinkPHP5框架中使用JWT的方法示例
Jun 03 #PHP
Thinkphp5框架异常处理操作实例分析
Jun 03 #PHP
You might like
PHP5 安装方法
2006/10/09 PHP
php实现按天数、星期、月份查询的搜索框
2016/05/02 PHP
yii2分页之实现跳转到具体某页的实例代码
2016/06/02 PHP
Thinkphp批量更新数据的方法汇总
2016/06/29 PHP
PHP中SESSION过期设置
2021/03/09 PHP
jquery 问答知识整理
2010/02/11 Javascript
仅img元素创建后不添加到文档中会执行onload事件的解决方法
2011/07/31 Javascript
JavaScript对数字的判断与处理实例分析
2015/02/02 Javascript
jquery中radio checked问题
2015/03/16 Javascript
javascript多物体运动实现方法分析
2016/01/08 Javascript
详解AngularJS之$window窗口对象
2018/01/17 Javascript
Node.js中你不可不精的Stream(流)
2018/06/08 Javascript
element-ui 设置菜单栏展开的方法
2018/08/22 Javascript
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
node express使用HTML模板的方法示例
2019/08/22 Javascript
js中位数不足自动补位扩展padLeft、padRight实现代码
2020/04/06 Javascript
vue将data恢复到初始状态 &amp;&amp; 重新渲染组件实例
2020/09/04 Javascript
python批量制作雷达图的实现方法
2016/07/26 Python
替换python字典中的key值方法
2018/07/06 Python
Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解
2019/02/28 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
2019/09/20 Python
使用Django搭建一个基金模拟交易系统教程
2019/11/18 Python
python实现图像全景拼接
2020/03/27 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
2020/10/23 Python
马克华菲官方商城:Mark Fairwhale
2016/09/04 全球购物
SIMON MILLER官网:洛杉矶的生活方式品牌
2020/10/19 全球购物
火山动力Java笔试题
2014/06/26 面试题
护理职业生涯规划书
2014/01/24 职场文书
幼儿园英语教学反思
2014/01/30 职场文书
诚信考试倡议书
2014/04/15 职场文书
环保建议书300字
2014/05/14 职场文书
卫生院艾滋病宣传活动小结
2014/07/09 职场文书
收银员岗位职责范本
2015/04/07 职场文书
领导干部学习心得体会
2016/01/23 职场文书
《兰兰过桥》教学反思
2016/02/20 职场文书
微软发布Windows 11今年最大更新22H2(附 ISO 镜像官方下载)
2022/09/23 数码科技