memcache 适合场景:
(1)网站包含访问量很大动态,因而数据库的负载将会很高。由于大部分数据库请求都是读操作,那么memcached可以显著地减小数据库负载
(2)如果数据库服务器的负载比较低但CPU使用率很高,这时可以缓存计算好的结果和渲染后的网页模板
(3)利用memcached可以缓存 session数据 、临时数据以减少对他们的数据库写操作
(4)缓存一些很小但是被频繁访问的文件
memcache不适合场景:
(1)缓存对象的大小大于1MB
(2)key的长度大于250字符
(3)虚拟主机不让运行memcached服务
如果应用本身托管在低端的虚拟私有服务器上,像vmware, xen这类虚拟化技术并不适合运行memcached。Memcached需要接管 和控制大块的内存,如果memcached管理的内存
被OS或 hypervisor交换出去,memcached的性能将大打折扣
(4)应用运行在不安全的环境中,仅仅通过telnet就可以访问到memcached。如果应用运行在共享的系统上,需要着重考虑安全问题
(5)业务本身需要的是持久化数据或者说需要的应该是database
memcache解释:
过期时间最长可以达到30天
memcached 使用:
连接memcached服务器: telnet 127.0.0.1 11211
memcache 类:
<?php
/**
* Pengcz_Cache
*
* @version $Id$
* @copyright
*/
/**
* 缓存类
*
*/
class Pengcz_Cache {
var $_memcached;
var $_app_key;
public function Seedit_Cache($app_key) {
$this->_memcached = new Memcached();
$this->_memcached->addServer(MEMCACHE_HOST, MEMCACHE_PORT);
$this->_app_key = strtolower($app_key);
}
public function set($key,$value,$expiration=0) {
$key = $this->_app_key . "_" . substr(md5($key),8,16);
$this->_memcached->set($key,$value,$expiration);
}
public function get($key) {
$key = $this->_app_key . "_" . substr(md5($key),8,16);
$data = $this->_memcached->get($key);
return $data;
}
public function delete($key) {
$key = $this->_app_key . "_" . substr(md5($key),8,16);
$data = $this->_memcached->delete($key);
return $data;
}
/*public function flush() {
return $this->_memcached->flush();
}*/
}