1. 程式人生 > >Memcache 學習筆記(一)----Memcache — Linux部署

Memcache 學習筆記(一)----Memcache — Linux部署

工作 apach sch trick 解壓 font ash 一個 鍵值

  Memcache

一、Memcache簡介(內容摘自 --百度百科

  memcache是一套分布式的高速緩存系統,由LiveJournal的Brad Fitzpatrick開發,但目前被許多網站使用以提升網站的訪問速度,尤其對於一些大型的、

  需要頻繁訪問數據庫的網站訪問速度提升效果十分顯著 。這是一套開放源代碼軟件,以BSD license授權發布。官方網址:http://www.memcache.org

二、Memcache 工作流程 

  1.MemCache的工作流程如下:先檢查客戶端的請求數據是否在memcached中,如有,直接把請求數據返回,不再對數據庫進行任何操作;如果請求的數據不在memcached中,

    就去查數據庫,把從數據庫中獲取的數據返回給客戶端,同時把數據緩存一份到memcached中(memcached客戶端不負責,需要程序明確實現);每次更新數據庫的同時更新

    memcached中的數據,保證一致性;當分配給memcached內存空間用完之後,會使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效數據首先被

    替換,然後再替換掉最近未使用的數據。

  2.Memcache是一個高性能的分布式的內存對象緩存系統,通過在內存裏維護一個統一的巨大的hash表,它能夠用來存儲各種格式的數據,包括圖像、視頻、文件以及數據庫檢索的結果

    等。簡單的說就是將數據調用到內存中,然後從內存中讀取,減少數據庫訪問次數,以提高動態Web應用的速度、提高可擴展性,從而大大提高讀取速度。

  3.Memcache是danga的一個項目,最早是LiveJournal 服務的,最初為了加速 LiveJournal 訪問速度而開發的,後來被很多大型的網站采用。

  4.Memcached是以守護程序(監聽)方式運行於一個或多個服務器中,隨時會接收客戶端的連接和操作。

三、Memcache 特性和限制

  1.在 Memcached中可以保存的item數據量是沒有限制的,只要內存足夠 。

   2.Memcached單進程在32位系統中最大使用內存為2G,若在64位系統則沒有限制,這是由於32位系統限制單進程最多可使用2G內存,要使用更多內存,可以分多個端口開啟多個Memcached進程 ,

    最大30天的數據過期時間,設置為永久的也會在這個時間過期,常量REALTIME_MAXDELTA 60*60*24*30控制

    最大鍵長為250字節,大於該長度無法存儲,常量KEY_MAX_LENGTH 250控制

    單個item最大數據是1MB,超過1MB數據不予存儲,常量POWER_BLOCK 1048576進行控制,它是默認的slab大小

   最大同時連接數是200,通過 conn_init()中的freetotal進行控制,最大軟連接數是1024,通過 settings.maxconns=1024 進行控制

   3.跟空間占用相關的參數:settings.factor=1.25, settings.chunk_size=48, 影響slab的數據占用和步進方式

   4.memcached是一種無阻塞的socket通信方式服務,基於libevent庫,由於無阻塞通信,對內存讀寫速度非常之快。

   5.memcached分服務器端和客戶端,可以配置多個服務器端和客戶端,應用於分布式的服務非常廣泛。

   6.memcached作為小規模的數據分布式平臺是十分有效果的。

   7.memcached是鍵值一一對應,key默認最大不能超過128個字 節,value默認大小是1M,也就是一個slabs,如果要存2M的值(連續的),不能用兩個slabs,因為兩個slabs不是連續的,無法在

    內存中 存儲,故需要修改slabs的大小,多個key和value進行存儲時,即使這個slabs沒有利用完,那麽也不會存放別的數據。

   8.memcached已經可以支持C/C++、Perl、PHP、Python、Ruby、Java、C#、Postgres、Chicken Scheme、Lua、MySQL和Protocol等語言客戶端。

四、memCache在Linux中的部署

  Linux mamCache 安裝

    安裝libevent

      官方網站 : http://libevent.org/

    1. 解壓

      tar -zvxf libevent-2.1.8-stable.tar.gz

    2. 進入目錄

      cd libevent-2.1.8-stable

    3. 執行

      ./autogen.sh

    4. 配置

      ./configure -prefix=/usr

    5. 編譯安裝

      make && make install

    安裝memcached

      官方網站 : http://memcached.org

    1. 解壓

      tar -zxvf memcached-2.x.x.tar.gz

    2. 進入目錄

      cd memcached-2.x.x

    3. 一步搞定

      ./configure && make && make test && sudo make install

    4.啟動

      memcached -d -u root -p 11211

    安裝 php 擴展

    1. 下載

      https://github.com/websupport-sk/pecl-memcache/archive/php7.zip

    2. 解壓

      unzip pecl-memcache-php7.zip

    3. 進入目錄

      cd pecl-memcache-php7

    4. 執行phpize

      /usr/local/php/bin/phpize

    5. 配置

      ./configure --with-php-config=/usr/local/php/bin/php-config

    6. 編譯安裝

      make && make install

    7. 修改 php.ini 配置文件

      快速定位php.ini和php擴展目錄的位置

      phpinfo,Loaded Configuration File

      vim /usr/local/php/etc/php.ini

      extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20151012/"

      extension="memcache.so";

    8. 重啟apache

      /usr/local/apache2/bin/apachectl restart

Memcache 學習筆記(一)----Memcache — Linux部署