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 相关文章推荐
Oracle Faq(Oracle的版本)
Oct 09 PHP
php生成EXCEL的东东
Oct 09 PHP
使用php来实现网络服务
Sep 15 PHP
php漏洞之跨网站请求伪造与防止伪造方法
Aug 15 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
Jun 26 PHP
php中文繁体和简体相互转换的方法
Mar 21 PHP
php随机显示指定文件夹下图片的方法
Jul 13 PHP
PHP 等比例缩放图片详解及实例代码
Sep 18 PHP
php实现的顺序线性表示例
May 04 PHP
php生成静态页面并实现预览功能
Jun 27 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
Aug 12 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
Nov 23 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中,文件上传
2006/12/06 PHP
php5.2时间相差8小时
2007/01/15 PHP
Joomla下利用configuration.php存储简单数据
2010/05/19 PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
2014/06/27 PHP
PHP中使用GD库创建圆形饼图的例子
2014/11/19 PHP
php文件缓存类用法实例分析
2015/04/22 PHP
PHP实现的简单异常处理类示例
2017/05/04 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
PHP 实现 JSON 数据的编码和解码操作详解
2020/04/22 PHP
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
2015/08/28 Javascript
js添加事件的通用方法推荐
2016/05/15 Javascript
js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
2016/05/25 Javascript
js修改onclick动作的四种方法(推荐)
2016/08/18 Javascript
浅析前端路由简介以及vue-router实现原理
2018/06/01 Javascript
Angularjs中date过滤器失效的问题及解决方法
2018/07/06 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
2019/05/13 Javascript
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
JavaScript实现滑块验证解锁
2021/01/07 Javascript
[49:40]2018DOTA2亚洲邀请赛小组赛 A组加赛 TNC vs Newbee
2018/04/03 DOTA
python基础教程之实现石头剪刀布游戏示例
2014/02/11 Python
Python中的startswith和endswith函数使用实例
2014/08/25 Python
玩转python爬虫之cookie使用方法
2016/02/17 Python
Python中模块pymysql查询结果后如何获取字段列表
2017/06/05 Python
python快排算法详解
2019/03/04 Python
在Python中利用pickle保存变量的实例
2019/12/30 Python
加拿大领先的时尚和体育零售商:Sporting Life
2019/12/15 全球购物
extern在函数声明中是什么意思
2014/01/19 面试题
学生的自我鉴定范文
2013/10/24 职场文书
怎样写好自我评价呢?
2014/02/16 职场文书
青春演讲稿范文
2014/05/08 职场文书
影子教师研修方案
2014/06/14 职场文书
工会优秀工作者事迹
2014/08/17 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
商业门面租房协议书
2014/11/25 职场文书