轉載:php
http://www.ccvita.com/257.htmlhtml
最近在研究怎麼讓Discuz!去應用Memcache去作一些事情,記錄下Memcache安裝的過程。linux
Linux下Memcache服務器端的安裝
服務器端主要是安裝memcache服務器端,目前的最新版本是 memcached-1.3.0 。
下載:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz
另外,Memcache用到了libevent這個庫用於Socket的處理,因此還須要安裝libevent,libevent的最新版本是libevent-1.3。(若是你的系統已經安裝了libevent,能夠不用安裝)
官網:http://www.monkey.org/~provos/libevent/
下載:http://www.monkey.org/~provos/libevent-1.3.tar.gzredis
用wget指令直接下載這兩個東西.下載回源文件後。
1.先安裝libevent。這個東西在配置時須要指定一個安裝路徑,即./configure --prefix=/usr;而後make;而後make install;
2.再安裝memcached,只是須要在配置時須要指定libevent的安裝路徑即./configure --with-libevent=/usr;而後make;而後make install;
這樣就完成了Linux下Memcache服務器端的安裝。詳細的方法以下:
sql
1.分別把memcached和libevent下載回來,放到 /tmp 目錄下:
# cd /tmp
# wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz
# wget http://www.monkey.org/~provos/libevent-1.2.tar.gzapache2.先安裝libevent:
# tar zxvf libevent-1.2.tar.gz
# cd libevent-1.2
# ./configure --prefix=/usr
# make
# make install緩存3.測試libevent是否安裝成功:
# ls -al /usr/lib | grep libevent
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent-1.2.so.1 -> libevent-1.2.so.1.0.3
-rwxr-xr-x 1 root root 263546 11?? 12 17:38 libevent-1.2.so.1.0.3
-rw-r--r-- 1 root root 454156 11?? 12 17:38 libevent.a
-rwxr-xr-x 1 root root 811 11?? 12 17:38 libevent.la
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent.so -> libevent-1.2.so.1.0.3
還不錯,都安裝上了。服務器4.安裝memcached,同時須要安裝中指定libevent的安裝位置:
# cd /tmp
# tar zxvf memcached-1.2.0.tar.gz
# cd memcached-1.2.0
# ./configure --with-libevent=/usr
# make
# make install
若是中間出現報錯,請仔細檢查錯誤信息,按照錯誤信息來配置或者增長相應的庫或者路徑。
安裝完成後會把memcached放到 /usr/local/bin/memcached ,session5.測試是否成功安裝memcached:
# ls -al /usr/local/bin/mem*
-rwxr-xr-x 1 root root 137986 11?? 12 17:39 /usr/local/bin/memcached
-rwxr-xr-x 1 root root 140179 11?? 12 17:39 /usr/local/bin/memcached-debug架構
安裝Memcache的PHP擴展
1.在http://pecl.php.net/package/memcache 選擇相應想要下載的memcache版本。
2.安裝PHP的memcache擴展
tar vxzf memcache-2.2.1.tgz
cd memcache-2.2.1
/usr/local/php/bin/phpize
./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir
make
make install
3.上述安裝完後會有相似這樣的提示:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/
4.把php.ini中的extension_dir = "./"修改成
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/"
5.添加一行來載入memcache擴展:extension=memcache.so
memcached的基本設置:
1.啓動Memcache的服務器端:
# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid
-d選項是啓動一個守護進程,
-m是分配給Memcache使用的內存數量,單位是MB,我這裏是10MB,
-u是運行Memcache的用戶,我這裏是root,
-l是監聽的服務器IP地址,若是有多個地址的話,我這裏指定了服務器的IP地址192.168.0.200,
-p是設置Memcache監聽的端口,我這裏設置了12000,最好是1024以上的端口,
-c選項是最大運行的併發鏈接數,默認是1024,我這裏設置了256,按照你服務器的負載量來設定,
-P是設置保存Memcache的pid文件,我這裏是保存在 /tmp/memcached.pid,
2.若是要結束Memcache進程,執行:
# kill `cat /tmp/memcached.pid`
也能夠啓動多個守護進程,不過端口不能重複。
3.重啓apache,service httpd restart
Memcache環境測試:
運行下面的php文件,若是有輸出This is a test!,就表示環境搭建成功。開始領略Memcache的魅力把!
< ?php
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211);
$mem->set('key', 'This is a test!', 0, 60);
$val = $mem->get('key');
echo $val;
?>
參考資料:
對Memcached有疑問的朋友能夠參考下列文章:
Linux下的Memcache安裝:http://www.ccvita.com/257.html
Windows下的Memcache安裝:http://www.ccvita.com/258.html
Memcache基礎教程:http://www.ccvita.com/259.html
Discuz!的Memcache緩存實現:http://www.ccvita.com/261.html
Memcache協議中文版:http://www.ccvita.com/306.html
Memcache分佈式部署方案:http://www.ccvita.com/395.html
錯誤問題解決:
memcached: error while loading shared libraries: libevent-2.0.so.5: cannot o
http://blog.csdn.net/keda8997110/article/details/8767606
memcached基本選項
-p 端口 監聽tcp端口
-d 以守護進程方式運行memcached
-u username 以username運行
-m 《num》 最大的內存使用,單位是MB ,缺省是64MB
-c <num> 軟鏈接數量,缺省是1024
-v 輸出警告和錯誤信息
-vv 打印客戶端的請求和返回信息
檢查memcached是否正常運行
#ps aux | grep memcached
#telnet localhost 11211
....
stats
...
會顯示memcached的基本信息
若是啓動時出現「memcached: error while loading shared libraries:libevent-2.0.so.5: cannot
open shared object file: No such file or directory」之類的信息,表示memcached 找不到
libevent 的位置
因此,請先使用whereis libevent 獲得位置,而後鏈接到memcached 所尋找的路徑
首先查看,libevent 在哪裏
# whereis libevent
libevent: /usr/local/lib/libevent.la /usr/local/lib/libevent.so /usr/local/lib/libevent.a
而後,再看memcached 從哪裏找它
# LD_DEBUG=libs memcached -v 2>&1 > /dev/null | less
能夠看到:是/usr/lib/libevent-2.0.so.5,因此,建立軟鏈
[root@localhost tools]# ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5
再次啓動
關閉memcached :pkill memcached
http://blog.csdn.net/clh604/article/details/16342755
memcache做爲一款優秀的進程外緩存,經常被運用於高併發系統架構中。這裏主要談談怎麼經過telnet工具,查看memcache運行情況並對其key進行管理維護。假設memcache安裝目錄:/usr/local/memcached
一、啓動memcache
啓動參數詳解
-d:以守護進程方式啓動。若是該參數沒有指定,當按ctrl+c命令結束,memcache自動關閉
-m:分配給memcache使用的最大內存數 單位是m,默認是64m
-u: 指定運行memcache的用戶
-l: 指定監聽的ip地址
-p: 指定監聽的tcp端口號,能夠經過-u指定udp端口.默認是11211
-c: 最大併發鏈接數
-P: 報錯進程id的文件
memcache 啓動以後,咱們就能夠經過telnet鏈接memcache,對其進行簡單操做管理。
二、telnet鏈接memcache
鏈接成功以後,便可對memcache進行操做管理了,經常使用的命令有:
Ⅰ、添加修改
命令格式:<command> <key> <flags> <exptime> <bytes>\r\n<data block>\r\n
<command>:add, set或 replace
<key> :緩存的名字
<flag>:16位無符號整數,和key要存儲的數據一塊兒存儲,並在程序get緩存時,返回。
<exptime>:過去時間,0 表示永遠不過時,若是非零,表示unix時間或距此秒數
<bytes>:存儲數據的字節數
\r\n: 表示換行回車
命令結果:
STORED :表示成功
NOT_STORED : 表示失敗
a)、添加緩存
若是key已經存在,則會添加失敗。
b)、修改緩存
key存在時,成功;不存在時,失敗。
c)、設置緩存
key不存在時,添加【add】;已存在時,替換【replace】。
Ⅱ、讀取
命令格式:get <key>+\r\n
<key>+:表示一個或多個key,多個key時,用空格隔開
a)、讀取單個key的緩存
b)、讀取多個key的緩存
Ⅲ、刪除
命令格式:delete <key> \r\n
<key>:要刪除的key
刪除id
Ⅳ、清空全部緩存
命令格式:flush_all
Ⅴ、查看緩存服務器狀態
命令:stats
Ⅵ、打印版本
命令:version
Ⅶ、打印內存信息
命令:stats slabs
三、退出telnet
1.檢查linux版本
cat /etc/issue
2.檢查是否已經安裝telnet
rpm -qa | grep telnet
上面的顯示是已經安裝,就不須要再安裝了,若是沒有,接着下一步吧。
3.安裝telnet及telnet-server,注意,須要root權限來安裝。
yum install telnet
yum install telnet-server
等待一會會提示是否安裝,輸入y而後回車,一會就裝好了。
4.由於裝好telnet服務以後,默認是不開啓服務的,下面咱們須要修改文件來開啓服務。
vi /etc/xinetd.d/telnet
修改 disable = yes 爲 disable = no
:wq!存儲——別告訴我你不懂的用vi...若是真的這樣,推薦你再看看個人安裝使用vi的經驗!
5.須要激活xinetd服務
service xinetd restart
我在使用中第一次有提示錯誤,第二次運行就沒事了:)
6.須要測試telnet是否成功開啓
telnet localhost
若是前面的操做都沒問題,輸入用戶名密碼能登陸成功。
7.當你使用其餘機器遠程telnet的時候,若是不成功,那麼頗有多是防火牆的問題,下面咱們來修改防火牆的設置
首先,使用netstat –tunlp查看是否23端口被防火牆封掉了:
再使用iptables修改設置,使用service iptables save保存設置,而後service iptables restart重啓防火牆。搞定!
祝你好運!
http://www.ttlsa.com/memcache/memcache-list-all-keys/
今天在作一個Memcache的session測試,可是在測試的過程當中,發現Memcache沒有一個比較簡單的方法能夠直接象redis那樣keys *列出全部的Session key,並根據key get對應的session內容,因而,我開始查找資料,翻出來的大部分是一些memcache經常使用命令等,可是對列出key的辦法,講解卻很少,因而來到google,找到了一個國外的資料
具體的內容我套用個人測試環境中,操做以下
1
|
> telnet 127.0.0.1 11211
|
1
2
3
4
|
stats items // 這條是命令
STAT items:7:number 1
STAT items:7:age 188
END
|
接下來基於列出的items id,本例中爲7,第2個參數爲列出的長度,0爲所有列出
1
2
3
|
stats cachedump 7 0 // 這條是命令
ITEM Sess_sidsvpc1473t1np08qnkvhf6j2 [183 b; 1394527347 s]
END
|
上面的stats cachedump命令列出了個人session key,接下來就用get命令查找對應的session值
1
2
3
4
5
6
7
|
get Sess_sidsvpc1473t1np08qnkvhf6j2 //這條是命令
VALUE
Sess_sidsvpc1473t1np08qnkvhf6j2 1440 1
83
Sess_|a:5:{s:6:"verify";s:32:"e70981fd305170c41a5632b2a24bbcaa";s:3:"uid";s:1:"1
";s:8:"username";s:5:"admin";s:9:"logintime";s:19:"2014-03-11 16:24:25";s:7:"log
inip";s:9:"127.0.0.1";}
|
參考地址:http://www.darkcoding.net/software/memcached-list-all-keys/