• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

Memcached缓存使用实例(PHP)

Memcached 彭东稳 8年前 (2016-01-21) 21497次浏览 已收录 0个评论

安装PHPmemcache扩展之前,要先编译安装一套LA/NMP,且下面这一步/usr/local/php/bin/phpize要使用编译安装的PHPphpize程序,用来生成configure文件。

一、安装PHPmemcache扩展功能

1)安装PHPmemcache扩展

上述安装完后会有类似以下的提示:

2)在php的主配置文件的“动态模块”相关位置添加如下一行来载入memcache扩展

二、测试PHPmemcache扩展功能

1)建立一个phpinfo()

访问phpinfo(),在浏览器中输入服务器的IP地址,可以看到php已经支持memcache了。

http://192.168.60.10/index.php

Memcached缓存使用实例(PHP)

2)对memcached功能进行测试,在网站目录中建立测试页面test.php

这个test.php文件就是连接memcache并插入一个testkey,如果插入成功则返回成功字符串,如果插入失败则返回失败字符串。我们可以访问test.php,在浏览器中输入http://192.168.60.10/test.php,如果插入成功则返回以下字符串:

然后可以连接到memcache服务器,获取testkey的值。

test.php中,最后我设置了一个key$mem->set(‘num’,1,0);,值等于1并且永不过期。那么接下来我又添加了一个countpage.php,就是用memcache的自增长功能,页面刷新一下就number的值就加1

执行完test.php页之后,number的值也就生效了,然后你可以尝试不停地刷新countpage.php页,页面显示的数值会一直加1

三、Memcached缓存MySQL数据实例

使用Memcached缓存MySQL查询结果减轻数据库压力,下面直接上代码,后面做简单说明。

说明:首先通过md5()SQL语句转化成一个唯一的KEY,并用此KEY查询Memcached检测是否已经缓存,是的话在直接返回结果,否则先查询数据库再缓存,并返回结果。这样,下次使用此KEY就可以直接返回结果了。

然后第一次访问http://192.168.60.10/mysql.php,会出现如下内容:

但第二次访问http://192.168.60.10/mysql.php,会出现如下内容:

然后你还可以通过telnet查看memcache的命中率,每一次刷新网页,get_hits就会加1.

四、保存PHP Sessionmemcached

memcache 来存储 session 在读写速度上会比 files 时快很多,而且在多个服务器需要共用 session 时会比较方便(LVS轮询时使用所有客户端的共享session会话),将这些服务器都配置成使用同一组 memcached 服务器就可以,减少了额外的工作量。缺点是 session 数据都保存在 memory 中,持久化方面有所欠缺,但对 session 数据来说也不是很大的问题。

编辑PHP的主配置文件(PHPsession默认保存在文件中改为memcached)

新建php页面session.php,为客户端设置启用session

新建php页面show.php,获取当前用户的session ID

五、Libmemcached

访问memcached的传统方法是使用基于perl语言开发的Cache::memcached模块,这个模块在大多数perl代码中都能良好的工作,但也有着众所周知的性能方面的问题。libMemcached则是基于C语言开发的开源的C/C++代码访问memcached的库文件,同时,它还提供了数个可以远程使用的memcached管理工具,如memcat, mempingmemstatmemslap

编译安装libmemcached

客户端工具

六、Nginx整合memcached

Nginx使用memcached的缓存功能[URI:data]


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (0)
[资助本站您就扫码 谢谢]
分享 (0)

您必须 登录 才能发表评论!