Php之memcached缓存和thinkphp缓存的应用总结

一、      tp默认的缓存方式是file缓存。实现方式:S(‘缓存名称’,缓存字符);

二、memcached缓存:基于内存的缓存,效率是文件系统的10倍。缓存方式:key-value。

1、linux安装memcached:

1)、首先安装libevent库软件(检测是否安装了libevent:ls –al /usr/local/lib |grep libevent);

2)、安装memcached

3)、配置memcached 和libevent关联:

Vi /etc/ld.so.conf

Include ld.so.conf.d/*.conf

/usr/local/lib

4)、启动memcached

/usr/local/bin/memcached –m 100 –p 11211 –d –u root –P /tmp/memcached.pid –c256

5)、常用启动参数:

-p 指定端口号(默认11211)  

-P 进程文件存放路径

-u 启动用户
-m 指定最大使用内存大小(默认64MB)  
-t 线程数(默认4)  
-l 连接的IP地址, 默认是本机  
-d start 启动memcached服务  
-d restart 重起memcached服务  
-d stop|shutdown 关闭正在运行的memcached服务  
-m 最大内存使用,单位MB。默认64MB  
-M 内存耗尽时返回错误,而不是删除项  
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48

重启先kill mem进程,在执行其他命令。

查看进程是否启动成功:pstree | grep mem

6)、php安装memcache扩展

1、下载和解压memcache

2、把memcache文件包移动到php扩展目录下

3、cd  memcache目录

4、输入phpize 回车

5、配置memcache:./configure –with-php-config=php安装路径/bin/php-config

6、编译和安装:得到类似于/Installing shared extensions :/php安装路径/lib/php/extensions/no-debug-non-zts-20090626/

7、添加memcache到php.ini中

Extension_dir = “/php安装路径/lib/php/extensions/no-debug-non-zts-20090626/”

Extension = “memcache.so”

Extension = “pdo_mysql.so”

8、通过phpinfo()函数查看php配置项,如果存在memcache则安装成功。

2、windows上安装memcached

1)、下载安装包

2)、进入到memcached目录,如C:/memcached

在终端输入:cd C:/memcached , 执行memcached.exe –d install进行安装

3)、终端启动:C:\memcached>memcached.exe –d start|stop

4)、下载php_memcache安装包,解压后把php_memcache复制到php/ext目录下

5)、在php.ini配置中打开extension=php_memcache.dll

至此,两个平台的memcached安装配置完成。

二、          使用memcached

1、  php操作memcached

实例化:$mem = new Memcache;

连接:$mem->connect(‘服务器ip如127.0.0.1’,11211);

添加缓存key:$mem->add(‘key’, ’缓存内容’,是否压缩(0表示不压缩),缓存时间);

删除:$mem->delete(‘key’);

修改:$mem->set(‘key’,’新的缓存内容’,0,缓存时间);

获取:$mem->get(‘key’,参数2);

参数2选项:

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

1:数据经过序列化,需要反序列化

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

2、  windows平台下使用telnet管理memcached

1)、telnet常用命令:

连接:telnet  localhost 11211 注意:如果不是本地要把localhost替换成真实环境中的ip

退出:quit

存储命令

<command name> <key> <flags> <exptime> <bytes>

<data block>

参数说明如下:

<command name>

set/add/replace

<key>

查找关键字

<flags>

整型参数,客户机使用它存储关于键值对的额外信息

<exptime>

该数据的存活时间(以秒为单位,0 表示永远) 

<bytes>

存储字节数

<data block>

存储的数据块(可直接理解为key-value结构中的value)

 

3、  thinkphp中memcached实战应用

1)、页面局部缓存:将查询率高更新少的区块生成xml文件形式进行缓存。

2)、缓存数据集:

(1)缓存字段:把没有索引或者数据量大的字段缓存到memcached中。

(2)缓存数组结果集:数据量少的时候可以考虑,但要注意序列化数据。

(3)缓存整张表:少用。

3)缓存session