DiscuzX2.0缓存的用法与缓存机制解析[调用与更新缓存]系列二
重点介绍memcache内存缓存功能以及用法
开启服务器端
下载Memcached.exe 放入D:\Memcached目录
-------------------------------------------------------------
cmd命令提示符
安装:memcached.exe -d install
启动:memcached.exe -d start
安装好了,任务管理器可以看到一个memcached的进程,通过netstat -an命令查看
TCP 127.0.0.1:11212 0.0.0.0:0 LISTENING
11211端口被打开,监听中
停止:memcached.exe -d stop 或 memcached.exe -d shutdown
卸载:memcached.exe -d uninstall
推荐使用下面的命令(可以指定IP地址和端口)
D:\Memcached>sc create memcached binPath= "D:\Memcached\memcached.exe -p 9999 -l 127.0.0.1 -m 128 -d runservice" DisplayName= "memcached server" start= auto depend= TCPIP
其中 -d runservice 为启动Windows服务
启动服务:net start memcached server
安装好了,任务管理器可以看到一个memcached的进程,通过netstat -an命令查看
TCP 127.0.0.1:9999 0.0.0.0:0 LISTENING
---------------------------------------------------------------
开启客户端
下载php_memcache.dll 放入到 \php\ext\ 目录里
在php.ini配置文件中的扩展,加入下面一条
extension=php_memcache.dll
phpinfo() 查看有没有memcache信息
memcache.chunk_size
数据将会被分成指定大小(chunk_size)的块来传输,这个值(chunk_size)越小,写操作的请求就越多,如果发现其他的无法解释的减速,请试着将这个值增大到32768.
测试代码如下
$mem = new Memcache;
$mem->connect('127.0.0.1', 9999) or die ("Could not connect");
$obj=new stdClass;
$obj->name='秦迷空间';
$obj->domain='rczjp.cn';
$obj->curtime=time();
echo "写入的信息:\n";
var_dump($obj);
$mem->set('qinmi', $obj, false, 4) or die ("写入失败");//将信息存入Cache中,4秒后过期
sleep(2);
echo "2秒后获取Cache中的信息\n";
$get_result = $mem->get('qinmi');
var_dump($get_result);
echo $get_result->name."\n";
sleep(2);
echo "4秒后Cache过期,获取不到\n";
$get_result = $mem->get('qinmi');
var_dump($get_result);
输出结果
写入的信息:
object(stdClass)#5 (3) {
["name"]=>
string(8) "秦迷空间"
["domain"]=>
string(8) "rczjp.cn"
["curtime"]=>
int(1301291388)
}
2秒后获取Cache中的信息
object(stdClass)#6 (3) {
["name"]=>
string(8) "秦迷空间"
["domain"]=>
string(8) "rczjp.cn"
["curtime"]=>
int(1301291388)
}
秦迷空间
4秒后Cache过期,获取不到
bool(false)
其他
show status like 'qcache%';
SQL缓存
SELECT SQL_CACHE * FROM qinmi_common_syscache;
SELECT /*!40001 SQL_CACHE */ * FROM qinmi_common_syscache;
SQL不缓存
SELECT SQL_NO_CACHE * FROM qinmi_common_syscache;
SELECT /*!40001 SQL_NO_CACHE */ * FROM qinmi_common_syscache;
好了,关键的内存缓存就是这样实现的,好处大家都知道就是提高效率,下个系列就详细介绍Discuz2.0的缓存机制