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 相关文章推荐
使用Linux五年积累的一些经验技巧
Jun 20 PHP
php去除HTML标签实例
Nov 06 PHP
PHP中使用数组指针函数操作数组示例
Nov 19 PHP
PHP实现的增强性mhash函数
May 27 PHP
如何使用纯PHP实现定时器任务(Timer)
Jul 31 PHP
Yii2 RESTful中api的使用及开发实例详解
Jul 06 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
Jul 13 PHP
php实现支持中文的文件下载功能示例
Aug 30 PHP
Laravel程序架构设计思路之使用动作类
Jun 07 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
Nov 21 PHP
如何重写Laravel异常处理类详解
Dec 20 PHP
PHP7变量处理机制修改
Mar 09 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
PHP自动更新新闻DIY
2006/10/09 PHP
php Try Catch异常测试
2009/03/01 PHP
laravel框架上传图片实现实时预览功能
2019/10/14 PHP
从父页面读取和操作iframe中内容方法
2009/07/25 Javascript
javascript 短路法代码精简
2009/08/20 Javascript
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
jquery.cvtooltip.js 基于jquery的气泡提示插件
2010/11/19 Javascript
JavaScript面向对象知识串结(读JavaScript高级程序设计(第三版))
2012/07/17 Javascript
javascript实现数字+字母验证码的简单实例
2014/02/10 Javascript
jQuery中:image选择器用法实例
2015/01/03 Javascript
jQuery实现的网格线绘制方法
2016/06/20 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
2016/11/21 Javascript
self.attachevent is not a function的解决方法
2017/04/04 Javascript
JavaScript实现计算圆周率到小数点后100位的方法示例
2018/05/08 Javascript
vue-父子组件和ref实例详解
2019/11/10 Javascript
jQuery实现移动端图片上传预览组件的方法分析
2020/05/01 jQuery
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
Python 两个列表的差集、并集和交集实现代码
2016/09/21 Python
Python批处理删除和重命名文件夹的实例
2018/07/11 Python
Django Sitemap 站点地图的实现方法
2019/04/29 Python
Django学习笔记之为Model添加Action
2019/04/30 Python
python实现网站微信登录的示例代码
2019/09/18 Python
python读取Kafka实例
2019/12/23 Python
完美解决ARIMA模型中plot_acf画不出图的问题
2020/06/04 Python
Python如何将装饰器定义为类
2020/07/30 Python
世界上最大的曲棍球商店:Pro Hockey Life
2017/10/30 全球购物
优秀英语专业毕业生求职信
2013/11/23 职场文书
怎样写好自荐信和推荐信
2013/12/26 职场文书
房地产项目建议书
2014/03/12 职场文书
公司市场专员岗位职责
2014/06/29 职场文书
开服装店计划书
2014/08/15 职场文书
交通事故委托书范本
2014/09/28 职场文书
党员群众路线学习心得体会
2014/11/04 职场文书
教你怎么用Python处理excel实现自动化办公
2021/04/30 Python
pytorch 中autograd.grad()函数的用法说明
2021/05/12 Python
Python排序算法之插入排序及其优化方案详解
2021/06/11 Python