1. 程式人生 > >memcache的簡單介紹和使用

memcache的簡單介紹和使用

memcache簡介

memcache官網:http://memcached.org/

1. 簡單介紹

memcache是一套分散式的高速快取系統,由LiveJournal的Brad Fitzpatrick開發,但目前被許多網站使用以提升網站的訪問速度,尤其對於一些大型的、需要頻繁訪問資料庫的網站訪問速度提升效果十分顯著  。這是一套開放原始碼軟體,以BSD license授權釋出。【摘取自百度百科】

分散式(叢集):

快取系統:嚴格意義上來說,memcache不是一個nosql的資料庫,只是一個提供記憶體快取功能的系統。那怎麼理解別人說的memcache又是一個nosql資料庫?首選說明一下什麼是nosql(泛指

非關係型資料庫),關係型資料是基於二維表(實體和實體之間的關係就叫做關係型資料庫),而非關係型資料庫不使用SQL語句作為查詢,使用key-value這種資料結構儲存資料的資料庫,而memcache本身是沒有使用SQL語句作為查詢的,所以他是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,儲存並獲取值