memcache的簡單介紹和使用
memcache簡介
memcache官網:http://memcached.org/
1. 簡單介紹memcache是一套分散式的高速快取系統,由LiveJournal的Brad Fitzpatrick開發,但目前被許多網站使用以提升網站的訪問速度,尤其對於一些大型的、需要頻繁訪問資料庫的網站訪問速度提升效果十分顯著 。這是一套開放原始碼軟體,以BSD license授權釋出。【摘取自百度百科】
分散式(叢集):
快取系統:嚴格意義上來說,memcache不是一個nosql的資料庫,只是一個提供記憶體快取功能的系統。那怎麼理解別人說的memcache又是一個nosql資料庫?首選說明一下什麼是nosql(泛指
2. 使用原理
在使用的時候,先從nosql資料庫裡面獲取,有的話直接返回,沒有的話就先從MySQL獲取,然後快取到memcache裡面,下次直接從memcache裡面返回
3. memcache與MySQL的區別
a. 沒有使用SQL語句
b. memcache沒有MySQL中的表的概念,都是使用key-value來儲存的
c. memcache的資料是儲存到記憶體中的,斷電即丟失
注意:nosql的存在永遠不是為了取代MySQL(關係型資料),是關係型資料的一個補充。因為關係型資料庫有它獨特的地方(事務,儲存過程)。
memcache安裝(使用埠11211)
1. Windows下安裝
1.1 直接將memcached檔案放置到某一資料夾下
1.2 在cmd下執行如下命令(把memcache直接拖到視窗加上 -p 11211 回車 不能關閉視窗)可以使用Ctrl+c 終止
1.3 檢視是否啟動(新開一個cmd視窗),執行如下命令檢視是否有一個11211埠的程式在執行
# netstat -an
2. Linux下安裝
2.1 環境準備
在Linux環境下,需要gcc、g-c++、make(makefile)、cmake、autoconfig(configure)、libtool等工具
在Linux下聯網的情況下,使用如下命令
# yum install -y gcc make cmakeautoconfig libtool
-y 不需要使用確認互動式,即沒有安裝確認等麻煩提示
2.2 編譯安裝memcached
memcached依賴於 libevent庫,因此需要先安裝,分別到各自的官網下載穩定版
先編譯安裝libevent,在編譯安裝memcached,同時在安裝memcached需要指定libevent的安裝路徑
具體步驟:
上傳
a. 先下載libevent,解壓,並安裝(一般Linux下軟體安裝都是放在/usr/local/src目錄下,安裝的軟體一般放在/usr/local/NAME)
# ./configure--prefix=/usr/local/libevent && make && make install
--prefix 指定安裝路徑
b. 安裝memcache,解壓、編譯、安裝
# ./configure --prefix=/usr/local/memcached--with-libevent=/usr/local/libevent && make && make install
--with-libevent 告訴memca libevent 的安裝位置
2.3 memcached的啟動
# /usr/local/memcached/bin/memcached -m 64-p 11211 -u nobody -vv
注意:此時memcached成功啟動,但把資訊輸出到控制檯。
如果想讓memcached作為服務在後臺啟動,只需要加上-d選項
# /usr/local/memcached/bin/memcached -m 64 -p 11211-u nobody -d
如果需要檢視引數資訊,使用 memcached -h 檢視幫助:
操作memcache
memcached的客戶端與伺服器端的通訊很簡單,基於文字的協議,類似http協議,可以直接使用Telnet來做互動
1. Windows和 Linux下一樣
使用Telnet操作
進入
#telent localhost 11211
退出
輸入quit命令,注意需要是另起一行(按一下回車)或者按Ctrl + ](隨時使用)之後按Ctrl+c
2. 基本命令:
學習memcache的增刪改查命令:
add key flag expire length
key: 名稱
flag: 標記是一個16位的無符號整形資料,用來設定伺服器端跟客戶端一些互動的操作
expire:過期時間,memcache時間
length:資料長度(B)
※add 增加
# add name1 0 4
key 給值起一個名字叫“name”
flag 標誌為一個正整數
expire 有效期 0 不過期
length 快取的長度(B為單位)4
注意:
如何理解flag
memcached基於本文協議,所有的資料都是被當做字串來儲存的。那如何儲存php中的物件和陣列?
答:將陣列序列化成字串,取出的時候,然後反序列化成 陣列/物件等
這個時候,就可以通過flag來標記如何發序列化。
比如:1 就是字串 2 反序列化成陣列 3 發序列化成物件
如何理解expire
設定快取的有效期,有三種格式
1. 設定秒數,從設定開始,n秒後失效
2. 時間戳,到指定時間戳後失效
3. 設定為0,不自動失效(特別注意,不是永久有效。a. 在memcache安裝時候,指定了一個最長的有效時間,預設是30天 b. 可能不到30天,就會被擠出去)
※delete 刪除
#delete key
※replace 替換
#replace key flag expire length
※get 獲取
# getkey
※set 如果資料有 replace 沒有則 add
# setkey flag expire length
※incr 增加
# incrage NUMBER
※decr 減少
# decrage NUMBER
※stats 統計memcache伺服器資訊
#stats
※flush_all 清空所有資料
#flush_all
使用php操作memcache
1. Windows下
a. 到(http://downloads.php.net/pierre/)下載擴充套件dll檔案
b. 將該檔案放到php的extension_dir對應的目錄下
c. 修改php.ini檔案,加入 extension=php_memcache.dll,引入該檔案
d. 重啟Apache
2. Linux下
a. 到(http://pecl.php.net/package/memcache)去下載擴充套件原始碼
b. 一般下載到 /usr/local/src 目錄下,解壓,並進入該資料夾內
c. 使用當前php的phpize命令建立configure檔案(必須在擴充套件目錄內)
# /usr/local/php/bin/phpize (絕對路徑phpize)
*找不到的可以使用find / -name phpize 進行查詢
d. 利用上面生成的configure檔案,收集系統資訊
# ./configure--with-php-config=/usr/local/php/bin/php-config
--with-php-config 告訴它php配置檔案位置e. 執行編譯、安裝
# make && make install
注意:可以檢視上述命令執行完成之後的結構
# ls/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
d. 修改php.ini配置檔案,重啟Apache
將上面生成的地址增加到php.ini配置檔案,如下
extension_dir=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
extension=memcacahe.so
e. 測試
建立一個test.php檔案,測試php是否有memcache的一個模組
php操作memcache,儲存並獲取值