linux 下的 memcached 开发
时间:2008-01-07
来源:互联网

memcached 这个东西是个十分好的东西.做为PHPer不懂用的话如果挤身于php高手之列呢.所以有此一章
在自己的LINUX 下配置好了 memcached , 按照网上的配置访问问题都不大.网上的memcached的安装教程都挺正确的.
不过按照自己的环境要注意几点.
第一就是在安装 memcached 之前 必须先编译安装好 libevent 包. 这个有下.自己百度
第二就是 编译 libevent 包的时候记得是 ./configure --prefix=/usr 编译到 /usr 目录.
因为usr 目录下有个lib 目录.里面全都是 xx.so xx.so.1 之类的LIB库.
装完了libevent 以后 再开始 安装 memcached .
装 memcached 也要注意.网上讲的也不是很好.
网上讲的是改php.ini 的 extension dir 地址. 其实只要我们在 编译生成 memcached.so 以后.放我们设置好的存放so的目录下就行了.
以上几点是我在安装时候的得到的. 自己看着办吧. 其实安装挺简单的.
然后就是使用 memcached 了. 使用memcached 有两种办法.第一种就是用pecl 包 的 memcached 模块. 不过这办法要编译. 第二种是使用 memcached-client .php 文件. 这个速度上当然不够好了.所以我选择了第一种方法.
使用memcached 其实挺简单的.不过也是看你使用的具体环境了.也有可能是复杂的.
现在我就一个一个对 pecl 的memcached 里面的方法 一个一个试.呵呵. 反正俺快没工作了.时间多......
1
Memcache::add 方法
这个方法就是在 往内存里面添加变量 挺爽看例子
如果变量已经存在内存中.那么就会返回 false . 我只给出基本招式.自己灵活运用了.
Memcached:: set 方法
设置 变量在内存中的值
有参数 同 Memcached:: add 一样
1 为 变量在内存中的标志 2 为 变量的值 3为是否压缩标志 4为 变量在内存中的存活秒数
看例子吧. 昏 上不了图..太大.只能手写了
PHP代码:
<?php
$mem = new Memcache;
$mem->connect('localhost',11211) or die("not connect");
!$mem->set('mykey','good job'') && die("not input memory");
echo($mem->get('mykey')); //没压缩前
!$mem->set('mykey','good job',MEMCACHE_COMPRESSED,50) && die("not input memory");
echo($mem->get('mykey)); // 压缩和设置了变量在内存中的存活时间
?>
?>
3
Memcached :: get 方法
这个方法看名字就知道 是从内存中获取 变量 ,前面我们存过变量进去的嘛还记得吧.呵呵
使用方法很简单
看:
PHP代码:
<?php
$mem=new Memcache;
$mem->connect('localhost',11211) or die("not connect");
if(!$mem->get('kesdy')){
echo 'xx';
}
?>
4
Memcache::connect 这个方法不用讲了吧. 看上面的所有例子都有用到.
第一个参数是: memcache 服务器的IP地址..第二个参数是: memcache 的监听端口. 默认是11211
Memcache::pconnect 这个也不用说了吧 .. 呵呵 长连接
[ 本帖最后由 逆雪寒 于 2008-1-7 15:16 编辑 ]
作者: 逆雪寒 发布时间: 2008-01-07
Memcache :: replace() 方法
这个方法看名字就知道.是替换在内存中已存在的变量的值和参数等.
如果 变量在内存中已经存在 但我们想改变他的值最好就不要用 Memcache :: set () 方法. 在这种情况来说效率上 replace() 效率更快更好
上菜
PHP代码:
<?php
$mem = new Memcache;
$mem->connect('localhost',11211);
$mem->set('mykey','xxeedd');
$mem->replace('mykey','dddddddddddddd');
echo($mem->get('mykey'));
?>
可以看出 给替换了吧.呵呵
6
Memcache::increment 方法
这个是对 内存变量的值为 数值的有效.
PHP代码:
<?php
$mem = new Memcache;
$mem->connect('localhost',11211);
$mem->set('mykey',5);
$mem->increment('mykey',2); //这样的话 mykey 的值就自动加了 2 成了 7
echo($mem->get('mykey'));
?>
Memcache::decrement 方法 和他刚好相反.
7 Memcache:: delete() 方法
这个方法是手动删除一个在内存中的变量.
PHP代码:
<?php
$mem = new Memcache;
$mem->connect('localhost',11211);
$mem->set('mykey',5);
$mem->delete('mykey'); //删除,还可以带个参数是 在多少秒后进行删除. $mem->delete('mykey',50);
echo($mem->get('mykey'));
?>
8
Memcache :: flush()
使存在内存中的所有变量全部失效.
用法也很简单.
PHP代码:
<?php
$mem = new Memcache;
$mem->connect('localhost',11211);
$mem->set('mykey',5);
$mem->flush();
?>
下面我试下 memcached 多进程 和集群下的效果如何.
以后再做讲解了.....

[ 本帖最后由 逆雪寒 于 2008-1-9 11:12 编辑 ]
作者: 逆雪寒 发布时间: 2008-01-07

作者: luzhou 发布时间: 2008-01-07

作者: 逆雪寒 发布时间: 2008-01-08
作者: lin_chaoqi 发布时间: 2008-03-05

作者: oldjan 发布时间: 2008-03-20

作者: 魔力鸟 发布时间: 2008-03-31
作者: kth007 发布时间: 2008-04-02
1、对于大块的数据,存储时即使不设定压缩标志,memcache客户端也会自动压缩后上传。
2、数组类型的数据先序列化成字符串再送往memcache服务器。
3、对象类型的数据先用get_class_vars函数将其转化成数组,再序列化成字符串上传给服务器。
4、服务器端只保存字符串。
作者: carche 发布时间: 2008-04-02
作者: 逆雪寒 发布时间: 2008-04-03
引用:
原帖由 carche 于 2008-4-2 19:37 发表2、数组类型的数据先序列化成字符串再送往memcache服务器。
3、对象类型的数据先用get_class_vars函数将其转化成 ...
难道就因为我在win服务器下?
[ 本帖最后由 thaiki 于 2008-4-3 15:09 编辑 ]
作者: thaiki 发布时间: 2008-04-03
作者: carche 发布时间: 2008-04-03
apt-get install memcached php5-memcache
然后编辑 /etc/php5/conf.d/memcache.ini
;extension=memcache.so
去掉分号
apache2ctl restart
就可以用了
[ 本帖最后由 姜运涛 于 2008-4-4 11:33 编辑 ]
作者: 姜运涛 发布时间: 2008-04-04
作者: thaiki 发布时间: 2008-04-05

作者: angelomh 发布时间: 2008-04-10
作者: 逆雪寒 发布时间: 2008-04-10
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28