ホームページ > バックエンド開発 > PHPチュートリアル > PHP が MEMCACHE を呼び出すキャッシュ テクノロジの例

PHP が MEMCACHE を呼び出すキャッシュ テクノロジの例

little bottle
リリース: 2023-04-06 07:10:01
転載
2435 人が閲覧しました

プロジェクトで大量のアクセスが関係する場合、キャッシュを適切に使用するとデータベースへの負荷が軽減され、ユーザー エクスペリエンスが向上します。つまり、非リアルタイム要件を前提として、短時間(数秒)以内に、データベースを直接読み取ることなく、表示に使用されるデータがキャッシュから取得されるため、データベースの読み取りプレッシャーを効果的に軽減できます。データベース。以下は、PHP 言語での memcache の使用の記録です:

まず、memcachepool を作成します。これは、さまざまな構成に従って読み取られ、さまざまな memcache インスタンスを生成できます。 $memcache->addServer($host,$port,$flag); を使用して、memcache サーバーを接続プールに追加します。コード例は次のとおりです。

class memcachePool{
     private static $instance;
     private $memcacheList = array();
    private function __construct(){

    }
     public static function getInstance(){
         if(self::$instance != null)
             return self::$instance;
         self::$instance = new memcachePool();
         return self::$instance;
     }
    /**
     * get memcache object from pool
     * @param  [type] $host 服务器
     * @param  [type] $port 端口
     * @param  [type] $flag 控制是否使用持久化连接。默认TRUE
     * @return [type]
     */
     public function getMemcache($host,$port,$flag){
         if(isset($this->memcacheList[$host.$port]))
             return $this->memcacheList[$host.$port];

        $memcache = new Memcache();
        // 向连接池中添加一个memcache服务器
        $memcache->addServer($host,$port,$flag);
        //开启大值自动压缩,第一个参数表示处理数据大小的临界点,第二个参数表示压缩的比例,默认为0.2
        $memcache->setCompressThreshold(2000,0.2);
        $this->memcacheList[$host.$port] = $memcache;
        return $memcache;
     }
 }
ログイン後にコピー

Then では、add、set、get、flush、delete などの一般的な memcache メソッドを含むメソッド クラスを実装します。ここでは dlufmemcache

class dlufMemcache{
     private $memcache = null;
     function __construct($host,$port){

       $this->memcache = memcachepool::getInstance()->getMemcache($host,$port,true);
     }
    /**
     * memcache set value
     * @param [type]  $key 键
     * @param [type]  $value 值
     * @param integer $expire  到期的时间,如果此值设置为0表明此数据永不过期
     * @param integer $flag 标志位 使用MEMCACHE_COMPRESSED指定对值进行压缩(使用zlib)
     * @param [type]  $serializetype
     */
     public function set($key,$value,$expire=0,$flag=0,$serializetype=null){
        if($serializetype == 'json' && is_array($value)){
            $value = json_encode($value);
        }
         $this->memcache->set($key,$value,$flag,$expire);
     }
    /**
     * 从服务端查找元素
     * @param  [type] $key
     * @return [type]
     */
     public function get($key){
         return $this->memcache->get($key);
     }
    /**
     * 增加一个条目到缓存服务器
     * @param [type]  $key
     * @param [type]  $value
     * @param integer $expire
     * @param integer $flag
     * @param [type]  $serializetype
     */
    public function add($key,$value,$expire=0,$flag=0,$serializetype=null){
        if($serializetype == 'json' && is_array($value)){
            $value = json_encode($value);
        }
        $ret = $this->memcache->add($key,$value,$flag,$expire);
        return $ret;
    }
    /**
     * 清洗(删除)已经存储的所有的元素
     * @return [type]
     */
    public function flush(){
        return $this->memcache->flush();
    }
    /**
     *  从服务端删除一个元素
     * @param  [type] delete 参数:key要删除的元素的key 删除该元素的执行时间 timeout如果值为0,则该元素立即删除。
     * @return [type]
     */
    public function delete($key){
        $ret = $this->memcache->delete($key,0);
        return $ret;
    }
 }
ログイン後にコピー

Then という名前を付けます。 dlufmemcache を呼び出します:

1 $memcache = new dlufMemcache('127.0.0.1',11211);
2  $memcache->set('memcache','come on dluf&baidu !!!!!!');
3  $ret = $memcache->get('memcache');
4  echo print_r($ret,true);
ログイン後にコピー

実行中の出力が表示されます:

PHP について詳しく知りたいですか?それなら、急いで、PHP 中国語 Web サイトの PHP ビデオ チュートリアル に従ってください。

以上がPHP が MEMCACHE を呼び出すキャッシュ テクノロジの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート