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 Try Catch异常测试
Mar 01 PHP
PHP中的正则表达式函数介绍
Feb 27 PHP
PHP中防止直接访问或查看或下载config.php文件的方法
Jul 07 PHP
PHP合并两个数组的两种方式的异同
Sep 14 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
Dec 20 PHP
ThinkPHP跳转页success及error模板实例教程
Jul 17 PHP
PHP中的session安全吗?
Jan 22 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
Feb 26 PHP
php上传excel表格并获取数据
Apr 27 PHP
php无限级分类实现评论及回复功能
Feb 18 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
May 29 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
Sep 17 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中几个常用的魔术常量
2012/02/23 PHP
PHP基于递归实现的约瑟夫环算法示例
2017/08/27 PHP
javascript TextArea动态显示剩余字符
2008/10/22 Javascript
Javascript 判断函数类型完美解决方案
2009/09/02 Javascript
学习ExtJS Column布局
2009/10/08 Javascript
网页禁用右键实现代码(JavaScript代码)
2009/10/29 Javascript
关于eval 与new Function 到底该选哪个?
2013/04/17 Javascript
jQuery 三击事件实现代码
2013/09/11 Javascript
手机开发必备技巧:javascript及CSS功能代码分享
2015/05/25 Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
2020/04/20 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
webpack3之loader全解析
2017/10/26 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
2018/09/17 Javascript
nodejs实现聊天机器人功能
2019/09/19 NodeJs
BootstrapValidator实现表单验证功能
2019/11/08 Javascript
Vue实例的对象参数options的几个常用选项详解
2019/11/08 Javascript
python基础教程之基本内置数据类型介绍
2014/02/20 Python
python中精确输出JSON浮点数的方法
2014/04/18 Python
python按照多个字符对字符串进行分割的方法
2015/03/17 Python
python中的turtle库函数简单使用教程
2018/07/23 Python
python批量复制图片到另一个文件夹
2018/09/17 Python
Python通用循环的构造方法实例分析
2018/12/19 Python
Django项目之Elasticsearch搜索引擎的实例
2019/08/21 Python
Python3爬虫中Selenium的用法详解
2020/07/10 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
2020/09/11 Python
丝芙兰中国官方商城:SEPHORA中国
2018/01/10 全球购物
澳大利亚女性快速时尚零售商:Ally Fashion
2018/04/25 全球购物
美国女士时尚珠宝及配饰购物网站:Icing
2018/07/02 全球购物
Clarks西班牙官方在线商店:clarks鞋
2019/05/03 全球购物
Parfumdreams英国:香水和化妆品
2019/05/10 全球购物
乡镇精神文明建设汇报材料
2014/08/15 职场文书
2015年国际护士节演讲稿
2015/03/18 职场文书
电影焦裕禄观后感
2015/06/09 职场文书
早恋主题班会
2015/08/14 职场文书