Memcache和Memcached 其实是一个东西,只是php中要是用的扩展不一样, 2009年左右有人丰富memcache的用法和性能,编写了一个libmemcached是独立第三方client library,才有了memcached ,用法也有了很大的改进比如添加了 getMulti() 批量获取键值

windows下只能安装php_memcache.dll 扩展并不存在 php_memcached.dll, 所以windows 中只能使用$mcd = new Memcache() 不能使用new Memcached()


Memcache 类

$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211);
$memcache->pconnec('127.0.0.1', 11211);
// 打开一个到服务器的持久化连接 , 连接不会在脚本执行结束后或者close()被调用后关闭
$memcache->addServer('123.57.210.55', 11211,$persistent,$weight);
// 向连接池中添加一个memcache服务器 $persistent 是否持久化连接 $weight
控制桶的数量提升被选中的权重 $timeout 表示连续持续时间
$memcache->set('name', 'TK');
// 默认存储不压缩 不过期 , 其中字符串和数值直接存储,其他类型序列化后存储
set其实是add方法和replace方法集合
$memcache->set('email', 'julylovin@163.com',MEMCACHE_COMPRESSED,5);
// MEMCACHE_COMPRESSED设置存储是否压缩 , 5表示5秒后过期但是最大只能设置2592000秒(30天)
如果设置为0 表示永不过期, 可以设置将来的时间戳
$memcache->set('info',array('age'=>'26','salary'=>'1000'));
// 可以直接存储数组,redis中存储需要手动serialize()序列化
$memcache->add('counter', '10', MEMCACHE_COMPRESSED, 0);
//如果键值存在会返回false , 如果不存在, 和set方法一样,生成一个counter的key并赋值10
$memcache->replace ('counter', '10');
//如果键值不存在会返回false , 如果存在, 替换counter的值为10
$memcache->increment('counter', 3);
// 首先将元素当前值转换成数值然后减去value 操作counter键值+3
若键不存在 则返回false 不能用于压缩的键值操作,否则get键会失败
$memcache->decrement('counter', 3); // 操作counter键值-3 , 若键不存在 则返回false
$memcache->delete('counter', 3); // 操作删除键counter , 3表示3秒内删除,默认是0即立即删除
$memcache->flush(); //flush()立即使所有已经存在的元素失效
$memcache->getExtendedStats ();
// 返回一个二维关联数据的服务器统计信息。数组的key由host:port方式组成
$memcache->getServerStatus ('127.0.0.1'); // 获取返回一个服务器的在线/离线状态  0表示离线 非0在线
$memcache->getStats(); // 获取服务器统计信息
$memcache->getVersion(); // 返回服务器版本信息
$memcache->setCompressThreshold ($threshold, $min_saving);
// 开启大值自动压缩 $threshold设置压缩阀值 2000字节 ,即字节数大于2K 就压缩
$min_saving 0--1之间 0.2表示压缩20%
$memcache->setServerParams('memcache_host', 11211, 1, 15, true, '_callback_memcache_failure');
// $memcache->addServer('memcache_host', 11211, false, 1, 1, -1, false);
已经通过addServer 配置过服务器 使用setServerParams 重新设置配置信息

Memcached 类

此次练习我是在linux上安装了phpstorm,linux平台开发配置看我的其他文章

$memcached = new Memcached(); //   必须安装memcached扩展 不会安装看我的相关文章
#server_key名词解释#
#当台服务IP和端口完全连通好之后,构成一个hash环,$server_key才会生效
#$server_key 只是为了存储的key打个标记 比如有三台 memcache服务器 (A B C ) , 指定 server_key
'master-a' 'master-b' 'master-c' 分别存储 会员 订单 日志 等等
$memcached->addServer('192.168.206.128',11211); // 连接服务器
$memcached->setOption(Memcached::OPT_COMPRESSION, false);
//配置存储不压缩,压缩value不利于递增递减
$memcached->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true);
//
$memcached->addServers(array( //添加多台服务器分布式
array('192.168.206.128', 11311, 20),
array('192.168.206.128', 11411, 30)
));
$memcached->flush(1); //1秒内清除所有元素
$memcached->set('name','TK');

$memcached->setByKey('server_master_db','mage','28');
# 指定 server_key server_master_db 存储键mage $memcached->setMulti(array('salary'=>'3000','email'=>'julylovin@163.com'));
// 存储多个元素 $memcached->setMultiByKey('server_master_db',
array('salary'=>'3000','email'=>'julylovin@163.com'));
// 'server_master_db'服务器 存储多个元素
$memcached->add('name','TK'); // 键name不存在添加value 否则添加失败

$memcached->addByKey('server_master_db','mname','MTK');
$memcached->append('key','-816'); // 键key的value后追加字符串 -816

$memcached->appendByKey('server_master_db','mname','-923');
$memcached->prepend('name','pre-') ; #向一个已存在的元素前面追加数据

$memcached->prependByKey('server_master_db','name','pre-') ;
# 使用server_key自由的将key映射到指定服务器 向一个已存在的元素前面追加数据
$memcached->get('name');

$memcached->get('name',null,$cas);
# 第2参数指定缓存回掉函数 ,不指定传null
# 如果元素被找到,并且返回变量 $cas 内部是通过引用变量回传的 $memcached->getByKey('server_master_db','mname'); # 从特定的服务器检索元素
$memcached->getAllKeys(); // bug 我一致返回是false
$memcached->cas($cas, 'name', 'TangKang');
#要与$memcached->get('name',null,$cas) 方法搭配用 才可以拿到 $cas变量
#它仅在当前客户端最后一次取值后,该key 对应的值没有被其他客户端修改的情况下, 才能够将值写入
#这是Memcached扩展比Memcache扩展一个非常重要的优势
在这样一个系统级(Memcache自身提供)的冲突检测机制(乐观锁)下, 我们才能保证高并发下的数据安全 $memcached->casByKey($cas,'server_master_db', 'name', 'TangKang');
$memcached->increment('age','1');
#增加数值元素的值 如果元素的值不是数值类型,将其作为0处理 $memcached->incrementByKey('server_master_db','age','1');
# 用于识别储存和读取值的服务器
$memcached->decrement('age','1');
#减少数值元素的值 如果元素的值不是数值类型,将其作为0处理 $memcached->decrementByKey('server_master_db','age','1');
# 用于识别储存和读取值的服务器
$memcached->getDelayed(array('name', 'age'), true, null);
# 请求多个元素, 如果with_cas设置为true,会同时请求每个元素的CAS标记
指定一个result callback来替代明确的抓取结果 $memcached->getDelayedByKey('server_master_db',array('name', 'age'), true, null);
$memcached->fetch();
# 搭配 $memcached->getDelayed()使用, 从最后一次请求中抓取下一个结果 $memcached->fetchAll();
#抓取最后一次请求的结果集中剩余的所有结果
$memcached->getMulti(array('name', 'age')); #检索多个元素

$memcached->getMultiByKey('server_master_db',array('mname', 'mage'));
# 从特定服务器检索多个元素
# 与 $this->memcached->fetchAll() 搭配使用
$memcached->getOption(Memcached::OPT_COMPRESSION);
# 获取Memcached的选项值
$memcached->getResultCode() ;
# 返回最后一次操作的结果代码 Memcached::RES_NOTSTORED $memcached->getResultMessage() ;
# 返回最后一次操作的结果描述消息
$memcached->getServerByKey('server_master_db') ; # 获取一个key所映射的服务器信息

$memcached->getServerList() ; #  获取服务器池中的服务器列表

$memcached->getStats() ; #  获取服务器池的统计信息

$memcached->getVersion() ;  #  获取服务器池中所有服务器的版本信息
$memcached->isPersistent() ; #判断当前连接是否是长连接
$memcached->replace('name','pre-julylovin') ;
#set()类似,但是如果 服务端不存在key, 操作将失败 $memcached->replaceByKey('server_master_db','name','pre-julylovin') ;
#setBykey()类似,但是如果 服务端不存在key, 操作将失败
$memcached->resetServerList() ; //清楚服务器池信息
$memcached->setOption(Memcached::OPT_PREFIX_KEY, "widgets") ;
#设置一个memcached选项 $memcached->setOptions(array()) ;
#设置一个memcached选项
$memcached->setSaslAuthData($username , $password ) ;
#setSaslAuthData 方法不存在
$memcached->touch('name', 10) ;
#设置键name 10秒后过期(只适用30天之内的秒数) ,30天以后请设置时间戳 $memcached->touchByKey('server_master_db','name',10) ;
$memcached->delete('age',10);
#10秒(秒数/时间戳)内删除一个元素 这个键已经存在删除队列
该键对应的get、add、replace命令都不可用,直到删除 $memcached->deleteByKey('server_master_db','age'); $memcached->deleteMulti(array('age','name')); #传入array删除多个key $memcached->deleteMultiByKey('server_master_db',array('age','name'));
$memcached->quit(); # 关闭所有打开的链接

Memcache/Memcached的PHP操作手册(纯手稿版)的更多相关文章

  1. php Memcache/Memcached操作手册

    php Memcache/Memcached使用教程 Memcache和Memcached 其实是一个东西,只是php中要是用的扩展不一样, 2009年左右有人丰富memcache的用法和性能,编写了 ...

  2. PHP7安装Memcache+Memcached缓存加速WordPress教程

    PHP7安装Memcache+Memcached缓存加速WordPress教程 2016年1月19日 6,691 Views 生活方式 PHP7最显著的变化就是性能的极大提升,已接近Facebook开 ...

  3. (47) odoo详细操作手册

    odoo 8 详细操作手册, ERP(Odoo8.0)操作手册-v1.10(陈伟明).pdf 链接: http://pan.baidu.com/s/1hsp0bVQ 密码: r9tt 花了将近9个月时 ...

  4. SharePoint2010升级到SharePoint2013操作手册

    SharePoint2010升级到SharePoint2013操作手册 目 录 第一章 前言    3 第二章 升级前准备    3 第三章 升级流程图    5 第四章 升级过程    5 4.1 ...

  5. Mysql 操作手册

    mysql操作手册 版本:5.6.16mysql linux安装基本步骤:#rpm -e --nodeps mysql-lib-5.1.*#rpm -ivh mysql-server#rpm -ivh ...

  6. [转]SVN操作手册

    [转]SVN操作手册 2012-04-28 11:26 by NewSea, 2495 阅读, 0 评论, 收藏, 编辑 原文: http://hi.baidu.com/caiqiupeng/blog ...

  7. SVN操作手册(part1&part2)——SVN安装

    SVN操作手册 1.关于SVN 有一个简单但不十分精确比喻: SVN = 版本控制 + 备份服务器 简单的说,您可以把SVN当成您的备份服务器,更好的是,他可以帮您记住每次上传到这个服务器的档案内容. ...

  8. Nginx+Tomcat+MemCached 集群配置手册

    系统实施文档 Nginx+Tomcat+MemCached 集群配置手册 目    录 第1章   概述 1.1   目标 互联网的快速发展带来了互联网系统的高负载和高可用性, 这要求我们在设计系统架 ...

  9. svn 迁移至git操作手册

    svn 迁移至git操作手册 项目交付.版本管理工具变更等情况下,迁移svn旧历史记录有很大必要,方便后续追踪文件的提交历史,文件修改记录比对等.git自带了从svn迁移至git的工具命令,可很好的对 ...

随机推荐

  1. 尼康G镜头与D镜头的差别

    尼康系统实现自动对焦必须:机身和镜头,两者至少其一拥有马达. 尼康现在新出的G头,几乎都带马达.但在胶片时代的G头,几乎都不带马达. G只表示:没有手动光圈环. D只表示:镜头能提供距离信息给机身. ...

  2. Four Node.js Gotchas that Operations Teams Should Know about

    There is no doubt that Node.js is one of the fastest growing platforms today. It can be found at sta ...

  3. go环境变量配置 (GOROOT和GOPATH)

    GOROOT就是go的安装路径在~/.bash_profile中添加下面语句: GOROOT=/usr/local/go export GOROOT 当然, 要执行go命令和go工具, 就要配置go的 ...

  4. MySQL各类日志文件相关变量介绍

    文章转自:http://www.ywnds.com/?p=3721 MySQL各类日志文件相关变量介绍 查询所有日志的变量   1 mysql> show global variables li ...

  5. 实现一个 Virtual DOM 算法

    1 前言 本文会在教你怎么用 300~400 行代码实现一个基本的 Virtual DOM 算法,并且尝试尽量把 Virtual DOM 的算法思路阐述清楚.希望在阅读本文后,能让你深入理解 Virt ...

  6. JavaWEB springmvc 使用定时任务

    1.配置web.xml 在web.xml配置使用springmvc框架,其他配置略. <display-name>xxx.com</display-name> <!-- ...

  7. Socket网络编程--Libev库学习(3)

    这一小节继续讲解各个观察器(Watcher). 上一小节已经讲解了ev_io(IO可读可写观察器),ev_stat(文件属性变化观察器),ev_signal(信号处理观察器),ev_timer(定时器 ...

  8. bash shell(5):if,else,while大小比较

    1.if :else 语句 .if的单分支语法格式: if 条件判断;then 语句1 语句2 …… else 语句1 语句2 …… fi .if的多分支语法格式: if 条件判断:then 语句1 ...

  9. Vue之vuex实现简易计算器

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. 对jquery新增加的class绑定事件 jquery 对相同class 绑定事件

    当页面加载时,就会注册所有的事件,后面通过jquery新增的内容(<div class="item"></div>),再对新增的添加事件$(".i ...