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