中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

淺解memcache

發布時間:2020-07-18 10:12:21 來源:網絡 閱讀:411 作者:cylcyl647308 欄目:數據庫


一.什么是memcache?

  memcache是一套分布式的高速緩存系統,對于一些大型的、需要頻繁訪問數據庫的網站訪問速度提升效果十分顯著,是一套開放源代碼軟件。它通過在內存里維護一個統一的巨大的hash表,它能夠用來存儲各種格式的數據,包括圖像、視頻、文件以及數據庫檢索的結果等。簡單的說就是將數據調用到內存中,然后從內存中讀取,從而大大提高讀取速度。服務器端主程序memcached是以守護程序(監聽)方式運行于一個或多個服務器中,隨時會接收客戶端的連接和操作,最大同時連接數為200。memcache既支持TCP協議,也支持UDP協議。


二.memcache的工作流程

        memcache先檢查客戶端的請求數據是否在memcached中,如有,直接把請求數據返回,不再對數據庫進行任何操作;如果請求的數據不在memcached中,就去查數據庫,把從數據庫中獲取的數據返回給客戶端,同時把數據緩存一份到memcached中(memcached客戶端不負責,需要程序明確實現);每次更新數據庫的同時更新memcached中的數據,保證一致性;當分配給memcached內存空間用完之后,會使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效數據首先被替換,然后再替換掉最近未使用的數據。


三.memcached與redis

        redis是一個開源的日志型、Key-Value數據庫,與memcache相比,有如下區別:

        1.memcached所有數據一直存儲在內存中,而redis并不是;

        2.memcached只支持簡單的key/value類型的數據,redis支持list、set、hash等數據結構的存儲;

        3.redis支持數據的備份,即主從數據的復制;

        4.redis支持數據的持久化,可以講內存中的數據保存在磁盤中,重啟的時候可以再次加載進行使用。


四.memcached在php中的簡單應用


系統環境:rhel6 x32 selinux and iptables disabled

主機角色:172.25.46.1 nginx php memcached

此實驗中關于nginx和php的安裝不再講解,可參考我之前的文章《基于lnmp架構的Dsicuz論壇》


  • 獲取源碼包并進行解壓縮

     #  tar zxf memcache-2.2.5.tgz

        cd memcache-2.2.5


  • 配置環境變量

     #   vi ~/.bash_profile

        PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin:/usr/local/lnmp/php/bin

     #   source ~/.bash_profil


  • 使用phpzie擴展php模塊,即在php中加入memcached模塊

   #    phpize

        Configuring for:

        PHP Api Version:        20100412

               Zend Module Api No:      20100525

               Zend Extension Api No:    220100525

          #   ./configure --enable-memcache

          #     make &&make install

                 Installing shared extensions:     /usr/local/lnmp/php/lib/php/extensions/no-debug-non-zts-20100525/

          #     cd   /usr/local/lnmp/php/lib/php/extensions/no-debug-non-zts-20100525/

          #     ll memcache.so

                -rwxr-xr-x 1 root root 259040 Jan 16 14:00memcache.so


  •         memcached為php做緩存

        #     cd /usr/local/lnmp/php/etc

        #     vim  php.ini

                844 ;  extension=msql.so

                845    extension=memcache.so


  •          編寫php函數

        #        cd  /usr/local/lnmp/nginx/html

        #        vim  index.php

                 <?php

                 phpinfo()

                 ?>


  •         開啟nginx及php服務

     #      nginx

     #      nginx -s reload

         #     /etc/init.d/fpmrestart

       

此時可以使用瀏覽器測試php頁面,我在實驗中訪問的是172.25.46.1/index.php,如圖:

淺解memcache


  • 安裝并啟動memcached服務

      #  yum install -y memcached.x86_64

     #   /etc/init.d/memcached start


  • 測試端口

    #   telnetlocalhost 11211

          Trying ::1...

          Connected to localhost.

          Escape character is '^]'.

          stats                                       ##查看memcached狀態

          STAT pid 4664

          STAT uptime 72

          STAT time 1452925893

          STAT version 1.4.4

           ......

          STAT curr_items 0

          STAT total_items 0

          STAT evictions 0

          END

          quit


  • 將memcached監控頁面放到nignx的發布目錄下

     #    cd memcache-2.2.5

      #    cp memcache.php /usr/local/lnmp/nginx/html/

      #    cd /usr/local/lnmp/nginx/html/

      #    vim memcache.php      

            $VERSION='$Id: memcache.php,v 1.22008/09/11 19:21:06 mikl Exp $';

 

            define('ADMIN_USERNAME','memcache');    // Admin Username              

            define('ADMIN_PASSWORD','westos');      // Admin Password                     

            define('DATE_FORMAT','Y/m/d H:i:s');

            define('GRAPH_SIZE',200);

            define('MAX_ITEM_DUMP',50);

 

            $MEMCACHE_SERVERS[] = '172.25.46.1:11211';// add more as an array             #監聽本機的11211端口

            #$MEMCACHE_SERVERS[] ='mymemcache-server2:11211'; // add more as an array


注意:在此實驗中,編輯此文件時要將后兩行注釋掉一行。我在實驗開始,都打開后,可以訪問到監控頁面,但是顯示不了監控畫面。


  • 編寫測試頁面

  # vim test.php

        <?php

       $memcache = new Memcache;

       $memcache->connect('127.0.0.1', 11211)or die ("Could not connect");

       $version = $memcache->getVersion();

       echo "Server's version:".$version."\n";

       $tmp_object = new stdClass;

       $tmp_object->str_attr = 'test';

       $tmp_object->int_attr = 123;

       $memcache->set('key', $tmp_object,false, 10) or die ("Failed to save data at the

       server");

       echo "Store data in the cache (datawill expire in 10 seconds)\n";

       $get_result = $memcache->get('key');

       echo "Data from the cache:\n";

       var_dump($get_result);

       ?>


  此時可以使用瀏覽器訪問memcached監控頁面,我在實驗中訪問的是172.25.46.1/memcache.php,用戶及密碼是文件memcache.php編輯的,如圖:

 淺解memcache


進入監控頁面,可以看到緩存使用為0,命中率為50%:

淺解memcache


訪問test.php頁面,對memcached進行測試,實驗中我訪問的是172.25.46.1/test.php,如圖:

淺解memcache


刷新此頁面,再觀察memcached監控頁面發生變化,緩存使用為119.0,命中率為85.7%,如圖:

淺解memcache


這是一個簡單的memcached在php中的應用,如您發現博文中存在問題或者您有更好地建議和意見可及時反饋給我哦~謝謝您的來訪!

淺解memcache

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

灵山县| 乌拉特前旗| 陈巴尔虎旗| 从江县| 长乐市| 中方县| 勐海县| 新沂市| 克拉玛依市| 佛学| 庆云县| 勃利县| 陇南市| 肥东县| 平和县| 青神县| 博客| 霍邱县| 营山县| 锡林浩特市| 历史| 秦皇岛市| 凤凰县| 盐津县| 临武县| 于都县| 闵行区| 丹东市| 阜平县| 达孜县| 垫江县| 屏南县| 湾仔区| 隆回县| 西丰县| 密云县| 泌阳县| 泗阳县| 阜新| 含山县| 镇康县|