如何將 memcached 融入到您的環(huán)境中?
在開始安裝和使用 using memcached 之前,我們需要了解如何將 memcached 融入到您的環(huán)境中。雖然在任何地方都可以使用 memcached,但我發(fā)現(xiàn)需要在數(shù)據(jù)庫層中執(zhí)行幾個經(jīng)常性查詢時,memcached 往往能發(fā)揮最大的效用。我經(jīng)常會在數(shù)據(jù)庫和應(yīng)用服務(wù)器之間設(shè)置一系列 memcached 實例,并采用一種簡單的模式來讀取和寫入這些服務(wù)器。圖 1 可以幫助您了解如何設(shè)置應(yīng)用程序體系結(jié)構(gòu):
圖 1. 使用 memcached 的示例應(yīng)用程序體系結(jié)構(gòu)
體系結(jié)構(gòu)相當(dāng)容易理解。我建立了一個 Web 層,其中包括一些 Apache 實例。下一層是應(yīng)用程序本身。這一層通常運行于 Apache Tomcat 或其他開源應(yīng)用服務(wù)器之上。再下面一層是配置 memcached 實例的地方 — 即應(yīng)用服務(wù)器與數(shù)據(jù)庫服務(wù)器之間。在使用這種配置時,需要采用稍微不同的方式來執(zhí)行數(shù)據(jù)庫的讀取和寫入操作。
讀取
我執(zhí)行讀取操作的順序是從 Web 層獲取請求(需要執(zhí)行一次數(shù)據(jù)庫查詢)并檢查之前在緩存中存儲的查詢結(jié)果。如果我找到所需的值,則返回它。如果未找到,則執(zhí)行查詢并將結(jié)果存儲在緩存中,然后再將結(jié)果返回給 Web 層。
寫入
將數(shù)據(jù)寫入到數(shù)據(jù)庫中時,首先需要執(zhí)行數(shù)據(jù)庫寫入操作,然后將之前緩存的任何受此寫入操作影響的結(jié)果設(shè)定為無效。此過程有助于防止緩存和數(shù)據(jù)庫之間出現(xiàn)數(shù)據(jù)不一致性。
安裝 memcached
memcached 支持一些操作系統(tǒng),包括 Linux®、Windows®、Mac OS 和 Solaris。在本文中,我將詳細(xì)介紹如何通過源文件構(gòu)建和安裝 memcached。采用這種方式的主要原因是我在遇到問題時可以查看源代碼。
libevent
libevent 是安裝 memcached 的唯一前提條件。它是 memcached 所依賴的異步事件通知庫。您可以在 monkey.org 上找到關(guān)于 libevent 的源文件。接下來,找到其最新版本的源文件。對于本文,我們使用穩(wěn)定的 1.4.11 版本。獲取了歸檔文件之后,將它解壓到一個方便的位置,然后執(zhí)行清單 1 中的命令:
清單 1. 生成和安裝 libevent
cd libevent-1.4.11-stable/
./configure
make
make install
memcached
從 Danga Interactive 獲取 memcached 源文件,仍然選擇最新的分發(fā)版。在撰寫本文時,其最新版本是 1.4.0。將 tar.gz 解壓到方便的位置,并執(zhí)行清單 2 中的命令:
清單 2. 生成和安裝 memcached
cd memcached-1.4.0/
./configure
make
make install
完成這些步驟之后,您應(yīng)該安裝了一個 memcached 工作副本,并且可以使用它了。讓我們進(jìn)行簡單介紹,然后使用它。
使用 memcached
要開始使用 memcached,您首先需要啟動 memcached 服務(wù)器,然后使用 telnet 客戶機(jī)連接到它。
要啟動 memcached,執(zhí)行清單 3 中的命令:
清單 3. 啟動 memcached
./memcached -d -m 2048 -l 10.0.0.40 -p 11211
這會以守護(hù)程序的形式啟動 memcached(
-d
),為其分配 2GB 內(nèi)存(
-m 2048
),并指定監(jiān)聽 localhost,即端口 11211。您可以根據(jù)需要修改這些值,但以上設(shè)置足以完成本文中的練習(xí)。接下來,您需要連接到 memcached。您將使用一個簡單的 telnet 客戶機(jī)連接到 memcached 服務(wù)器。
大多數(shù)操作系統(tǒng)都提供了內(nèi)置的 telnet 客戶機(jī),但如果您使用的是基于 Windows 的操作系統(tǒng),則需要下載第三方客戶機(jī)。我推薦使用 PuTTy。
安裝了 telnet 客戶機(jī)之后,執(zhí)行清單 4 中的命令:
清單 4. 連接到 memcached
telnet localhost 11211
如果一切正常,則應(yīng)該得到一個 telnet 響應(yīng),它會指示 Connected to localhost(已經(jīng)連接到 localhost) 。如果未獲得此響應(yīng),則應(yīng)該返回之前的步驟并確保 libevent 和 memcached 的源文件都已成功生成。
您現(xiàn)現(xiàn)已經(jīng)登錄到 memcached 服務(wù)器。此后,您將能夠通過一系列簡單的命令來與 memcached 通信。9 個 memcached 客戶端命令可以分為三類:
基本
高級
管理
基本 memcached 客戶機(jī)命令
您將使用五種基本 memcached 命令執(zhí)行最簡單的操作。這些命令和操作包括:
set
add
replace
get
delete
前三個命令是用于操作存儲在 memcached 中的鍵值對的標(biāo)準(zhǔn)修改命令。它們都非常簡單易用,且都使用清單 5 所示的語法:
清單 5. 修改命令語法
command
表 1 定義了 memcached 修改命令的參數(shù)和用法。
表 1. memcached 修改命令參數(shù)
參數(shù)用法
keykey 用于查找緩存值
flags可以包括鍵值對的整型參數(shù),客戶機(jī)使用它存儲關(guān)于鍵值對的額外信息