设为首页 收藏本站
查看: 1210|回复: 0

[经验分享] linux 下的 memcached 开发

[复制链接]

尚未签到

发表于 2015-9-2 07:32:30 | 显示全部楼层 |阅读模式
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    方法

这个方法就是在    往内存里面添加变量  挺爽看例子


mem_1.jpg (247.72 KB)

2008-1-7 14:16

如果变量已经存在内存中.那么就会返回 false  .  我只给出基本招式.自己灵活运用了.


Memcached:: set  方法

设置 变量在内存中的值

有参数 同   Memcached:: add  一样

1  为   变量在内存中的标志   2  为  变量的值    3为是否压缩标志   4为 变量在内存中的存活秒数

看例子吧.   昏  上不了图..太大.只能手写了
复制PHP内容到剪贴板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代码:

<?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   这个也不用说了吧 .. 呵呵    长连接


5  
Memcache :: replace()  方法

这个方法看名字就知道.是替换在内存中已存在的变量的值和参数等.

如果 变量在内存中已经存在 但我们想改变他的值最好就不要用 Memcache :: set () 方法.   在这种情况来说效率上  replace() 效率更快更好


上菜
复制PHP内容到剪贴板PHP代码:

<?php
$mem = new Memcache;
$mem->connect('localhost',11211);
$mem->set('mykey','xxeedd');
$mem->replace('mykey','dddddddddddddd');
echo($mem->get('mykey'));
?>

上面是输出   ddddddddddddddddddddd

可以看出  给替换了吧.呵呵

6   

Memcache::increment 方法

这个是对  内存变量的值为 数值的有效.
复制PHP内容到剪贴板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代码:

<?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代码:

<?php
$mem = new Memcache;
$mem->connect('localhost',11211);
$mem->set('mykey',5);
$mem->flush();
?>

恩基本讲完了.懂用这几个 东西.  memcached  基本也就那样了..

下面我试下  memcached  多进程 和集群下的效果如何.

以后再做讲解了.....

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-108484-1-1.html 上篇帖子: Memcached 使用手记 下篇帖子: 转:memcached命令行参数说明
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表