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 相关文章推荐
加强版phplib的DB类
Mar 31 PHP
PHP 获取远程文件内容的函数代码
Mar 24 PHP
用php的ob_start来生成静态页面的方法分析
Mar 09 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
Jun 27 PHP
php过滤XSS攻击的函数
Nov 12 PHP
php过滤html标记属性类用法实例
Sep 23 PHP
php通过记录IP来防止表单重复提交方法分析
Dec 16 PHP
php基于表单密码验证与HTTP验证用法实例
Jan 06 PHP
PHP多文件上传类实例
Mar 07 PHP
Laravel5中防止XSS跨站攻击的方法
Oct 10 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
Mar 14 PHP
laravel框架模型、视图与控制器简单操作示例
Oct 10 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下通过exec获得计算机的唯一标识[CPU,网卡 MAC地址]
2011/06/09 PHP
解析php安全性问题中的:Null 字符问题
2013/06/21 PHP
使用PHP如何实现高效安全的ftp服务器(二)
2015/12/30 PHP
jQuery 技巧大全(新手入门篇)
2009/05/12 Javascript
基于JQuery 的消息提示框效果代码
2011/07/31 Javascript
Js 时间函数getYear()的使用问题探讨
2013/04/01 Javascript
jquery移动listbox的值原理及代码
2013/05/03 Javascript
从QQ网站中提取的纯JS省市区三级联动菜单
2013/12/25 Javascript
JavaScript实现动态创建CSS样式规则方案
2014/09/06 Javascript
JQuery中serialize() 序列化
2015/03/13 Javascript
JavaScript获取DOM元素的11种方法总结
2015/04/25 Javascript
深入理解JavaScript中的对象
2015/06/04 Javascript
原生js实现addclass,removeclass,toggleclasss实例
2016/11/24 Javascript
微信小程序中悬浮窗功能的实现代码
2019/08/02 Javascript
vue.js实现照片放大功能
2020/06/23 Javascript
基于vue--key值的特殊用处详解
2020/07/31 Javascript
Python中针对函数处理的特殊方法
2014/03/06 Python
使用python在本地电脑上快速处理数据
2017/06/22 Python
Python+matplotlib实现华丽的文本框演示代码
2018/01/22 Python
Python测试人员需要掌握的知识
2018/02/08 Python
python pandas模块基础学习详解
2019/07/03 Python
python 操作mysql数据中fetchone()和fetchall()方式
2020/05/15 Python
python3通过qq邮箱发送邮件以及附件
2020/05/20 Python
Tensorflow tensor 数学运算和逻辑运算方式
2020/06/30 Python
泰国折扣酒店预订:Hotels2Thailand
2018/03/20 全球购物
拉飞逸官网:Lafayette 148 New York
2020/07/15 全球购物
Chupi官网:在爱尔兰手工制作的订婚、结婚戒指和精美珠宝
2020/09/28 全球购物
Java如何格式化日期
2012/08/07 面试题
杭州联环马网络笔试题面试题
2013/08/04 面试题
应聘编辑自荐信范文
2014/03/12 职场文书
网络优化专员求职信
2014/05/04 职场文书
计算机专业毕业生自荐书
2014/06/02 职场文书
双拥工作宣传标语
2014/06/26 职场文书
干部对照检查材料范文
2014/08/26 职场文书
教你怎么用Python实现多路径迷宫
2021/04/29 Python
Jupyter Notebook内使用argparse报错的解决方案
2021/06/03 Python