咸鱼韭菜

专注LANMP

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
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();
        }*/
    }

 

posted on 2016-07-06 13:14  咸鱼韭菜  阅读(231)  评论(0编辑  收藏  举报