首页 理论教育使用Memcached:PHPMVC开发实战

使用Memcached:PHPMVC开发实战

【摘要】:首先需要使用content方法连接上Memcached服务器,代码如下所示。接下来将继续使用Memcache成员方法对缓存数据库进行操作。stats cachedump:显示slabs指定范围内的缓存项,例如stats cachedump 0,3。

前面已经提到过,ThinkPHP默认就已经提供了Memcache缓存驱动。开发人员只需要指定DATA_CACHE_TYPE配置项,就可以改变缓存驱动。例如将DATA_CACHE_TYPE值配置为memcache,那么系统会自动将缓存驱动切换为Memcache。

为了帮助读者提高对Memcached缓存驱动的认识,这里将首先使用传统的PHP代码操作Memcached;然后再介绍使用telnet命令管理Memcached;最后将介绍使用MVC操作Memcached。

1.PHP操作Memcached

成功安装Memcache扩展后,PHP就具备与Memcached通信的能力了。首先需要使用content方法连接上Memcached服务器,代码如下所示。

缓存操作与数据库操作一样,最重要的就是增、删、改、查。接下来将继续使用Memcache成员方法对缓存数据库进行操作。

(1)add(增加缓存条目)

add方法可以向Memcached服务器增加缓存条目,如果存在相同缓存条目,则放弃操作。代码如下所示。

参数1为缓存key,要求250个英文字符之内,该参数需要唯一性;参数2表示缓存内容,最大1000KB,接受常见的数据类型,包括数组、Json等;参数3表示是否使用zlib压缩数据,默认为不使用;参数4表示缓存过期时间,以秒为单位,最大值为2592000(即30d)。

(2)delete(删除指定缓存)

delete可以根据传入的key,删除指定的缓存条目。

(3)set(修改)

set方法与add方法类似,set方法用于修改或添加缓存条目。如果数据库中没有对应的key,则将该条数据存放到数据库中,否则对指定的数据进行修改。

(4)get(查询)

get方法可以对指定的key取得对应的value。

get方法支持两个参数,其中参数1表示缓存key;参数2用于解压缩或反序列,参数2共有3个选项,如下所示。

➢0:数据没有经过压缩(默认)。

➢1:数据已经经过序列化,需要反序列数据。(www.chuimin.cn)

➢2:数据已被zlib压缩,需要解压缩。

2.使用命令行管理Memcached

直接登录Memcached服务器,能够直观地查看到数据库储存状态,对数据进行管理等。在程序调试阶段是必不可少的操作之一,所以读者需要掌握一些频繁使用的命令,方便在程序开发中进行调试。Memcached有第三方完善的管理工具,但最方便的还是使用telnte,命令如下。

成功登录后就可以对数据库进行管理了,常用的命令有stats、stats reset、stats slavs、stats items、stats cachedump、set、get、gets等,命令说明如下。

➢stats:获取Memcached服务器状态信息,包括服务器缓存数量,内在占用等。

➢stats reset:重新统计数据。

➢stats slabs:显示slabs。

➢stats items:显示当前slabs中存放的所有缓存项。

➢stats cachedump:显示slabs指定范围内的缓存项,例如stats cachedump 0,3。

➢flush_all:清空当前服务器上所有缓存数据。

➢quit:退出当前连接。

➢set:修改或添加一条缓存项。

➢get:根据key返回缓存项内容。

3.在MVC中操作Memcached

在ThinkPHP中使用Memcached是非常简单及高效的,系统默认已经提供了Memcache缓存驱动,要将缓存模式改为Memcache,只需要修改配置文件即可,如以下代码所示。

在切换到Memcache驱动后,原有的开发代码不需要做任何改变,这也是Cache中间件最为灵活和方便的地方。