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邮件类
Jan 03 PHP
PHP基础知识介绍
Sep 17 PHP
php实现与erlang的二进制通讯实例解析
Jul 23 PHP
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
Oct 29 PHP
yii实现图片上传及缩略图生成的方法
Dec 04 PHP
10个简化PHP开发的工具
Dec 25 PHP
PHP获取当前日期和时间及格式化方法参数
May 11 PHP
PHP接口并发测试的方法(推荐)
Dec 15 PHP
PHP插件PHPMailer发送邮件功能
Feb 28 PHP
浅谈Laravel中的一个后期静态绑定
Aug 11 PHP
PHP获取数组中指定的一列实例
Dec 27 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
Oct 01 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抽奖算法程序代码分享
2015/10/08 PHP
使用jQuery简化Ajax开发 Ajax开发入门
2009/10/14 Javascript
jquery五角星评分插件示例分享
2014/02/21 Javascript
浅析vue数据绑定
2017/01/17 Javascript
如何理解jQuery中的ajaxSubmit方法
2017/03/13 Javascript
Angularjs 实现动态添加控件功能
2017/05/25 Javascript
微信小程序switch组件使用详解
2018/01/31 Javascript
详解webpack的proxyTable无效的解决方案
2018/06/15 Javascript
Vuex中的State使用介绍
2019/01/19 Javascript
JS实现获取数组中最大值或最小值功能示例
2019/03/02 Javascript
vue项目中在外部js文件中直接调用vue实例的方法比如说this
2019/04/28 Javascript
Python实现单词拼写检查
2015/04/25 Python
Python3写入文件常用方法实例分析
2015/05/22 Python
如何使用七牛Python SDK写一个同步脚本及使用教程
2015/08/23 Python
Numpy中转置transpose、T和swapaxes的实例讲解
2018/04/17 Python
一些Centos Python 生产环境的部署命令(推荐)
2018/05/07 Python
python 从csv读数据到mysql的实例
2018/06/21 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
2019/03/23 Python
python将字符串list写入excel和txt的实例
2019/07/20 Python
Python中变量的输入输出实例代码详解
2019/07/28 Python
Python中typing模块与类型注解的使用方法
2019/08/05 Python
解决pandas展示数据输出时列名不能对齐的问题
2019/11/18 Python
win10系统下python3安装及pip换源和使用教程
2020/01/06 Python
python线性插值解析
2020/07/05 Python
python 逆向爬虫正确调用 JAR 加密逻辑
2021/01/12 Python
jupyter notebook指定启动目录的方法
2021/03/02 Python
萌新HTML5 入门指南(二)
2020/11/09 HTML / CSS
Merrell迈乐澳大利亚网站:购买户外登山鞋
2017/05/28 全球购物
北美女性服装零售连锁店:maurices
2019/06/12 全球购物
致跳远运动员加油稿
2014/02/11 职场文书
应聘英语教师求职信
2014/04/24 职场文书
产品包装策划方案
2014/05/18 职场文书
旅游与酒店管理专业求职信
2014/07/21 职场文书
学校党的群众路线教育实践活动对照检查材料
2014/09/24 职场文书
2016年班主任新年寄语
2015/08/18 职场文书
Redis集群节点通信过程/原理流程分析
2022/03/18 Redis