溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP memcache 內(nèi)存緩存 數(shù)據(jù)庫(kù)查詢 應(yīng)用 高洛峰 細(xì)說(shuō)PHP

發(fā)布時(shí)間:2020-06-22 18:23:10 來(lái)源:網(wǎng)絡(luò) 閱讀:275 作者:津沙港灣 欄目:數(shù)據(jù)庫(kù)

PHP memcache在數(shù)據(jù)庫(kù)查詢中應(yīng)用,減少連接數(shù)據(jù)庫(kù)的次數(shù),降低服務(wù)器的壓力!

/*
 * memcache應(yīng)用說(shuō)明 memory cache 內(nèi)存緩存
 * 工作原理
 *  服務(wù)器端口port 11211  
 * MemCached 存取鍵值對(duì)key => value
 * 1.內(nèi)網(wǎng)訪問
 * 2.設(shè)置防火墻
 */
 
        //創(chuàng)建memcache對(duì)象
        $mem  =  new  Memcache();
        
        //連接memcache服務(wù)器
        $host = 'localhost';
        $port = '11211';
        $mem->connect($host,$port);
        //$mem->addserver($host,$port);
        //$mem->addserver('192.168.10.254', 11211); //新增一臺(tái)服務(wù)器的內(nèi)存
        
        $dsn           =     'mysql:dbname=test;host=localhost';
        $username =    'root';
        $passwd     =    'root';
        $options     =    array(
                                            PDO::ATTR_AUTOCOMMIT=>true,
                                            PDO::ATTR_PERSISTENT=>true
                                           );
        //連接數(shù)據(jù)庫(kù)
        try{
            //創(chuàng)建對(duì)象
            $pdo =  new PDO($dsn, $username, $passwd, $options);
            //設(shè)置錯(cuò)誤使用異常模式
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        }catch(PDOException $e){
            echo "數(shù)據(jù)庫(kù)連接失敗:".$e->getMessage();
            exit;
        }
        
        $statement = "select * from users where id > ? and id < ?";
        //鍵名用md5()加密后 名字更規(guī)范 防止查詢語(yǔ)句信息泄漏
        $key = md5($statement);
        
        //直接從內(nèi)存要數(shù)據(jù)
        $data = $mem->get($key);
        
        //判斷是否存在$data,如果沒有才需要連接數(shù)據(jù)庫(kù)獲取數(shù)據(jù)!數(shù)據(jù)直接從內(nèi)存獲取,實(shí)現(xiàn)緩存。
        if(empty($data)){
        try{               
                //給數(shù)據(jù)庫(kù)管理系統(tǒng),編譯后等待 沒有執(zhí)行
                $pdostatement=$pdo->prepare($statement);
                $pdostatement->execute(array(3,6));
                //設(shè)置結(jié)果的模式
                $pdostatement->setFetchMode(PDO::FETCH_NUM);  
                $data = $pdostatement->fetchAll(PDO::FETCH_ASSOC);
                //保存在緩存中
                $mem->set($key, $data,MEMCACHE_COMPRESSED,10);
                echo '第一次數(shù)據(jù)庫(kù)查詢!<br/>';
        }catch (PDOException $e){
            echo '錯(cuò)誤的原因:'.$e->getMessage();
        }
        }
        
        //按表格形式輸出
        echo '<table border="1" width="800" align="center">';
        foreach ($data as $value){
            echo '<tr>';
            echo '<td>'.$value['id'].'</td>';
            echo '<td>'.$value['username'].'</td>';
            echo '<td>'.$value['password'].'</td>';
            echo '<td>'.$value['email'].'</td>';
            echo '</tr>';
        }
        echo '</table>';
        //關(guān)閉連接
        $mem->close();


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI