memcached安裝:
1:yum install -y epel-release
2:yum install -y libevent memcached libmemcached
3:啓動/etc/init.d/memcached start
4:ps aux|grep memcached
5:memcached -d -p 11211 -u memcached -m 64 -c 1024 -P /var/run/memcached/memcached.pid
6:相關的參數在/etc/init.d/memcached和/etc/sysconfig/memcached中定義 只有在/etc/sysconfig/memcached中定義才生效
memcached啓動時參數:
1:-d選項是啓動一個守護進程
2:m是分配給memcached使用的內存數量,單位是MB
3:-u是運行memcached的用戶,如果當前爲root的話,需要使用此參數指定用戶
4:-l是監聽的服務器ip地址
5:-p是設置memcached監聽的端口,默認是11211
6:-c是最大運行的併發連接數,默認是1024
7:-P是設置保存memcached的PID文件
查看memcached運行狀態:
1:memcached-tool 127.0.0.1:11211 stats 還有一個display
2:或者echo stats |nc 127.0.0.1 11211 需要安裝nc工具 yum install -y nc
3:若安裝libmemcached後,可以使用命令memstat --servers=127.0.0.1:11211查看memcached服務狀態
cmd_get :總的寫入量 get_hits:總的命中量 如果命中率低於80%,說明你的memcached不太好
memcached基本操作:
memcached命令行:
1:telnet 127.0.0.1 11211
2:set key2 0 60 3:key2 是鍵名 0是標記 60是過期時間,單位是秒 3是大小,單位字節
abc
STORED
get key2 :查詢key2
VALUE key2 0 3
abc
END
memcached語法規則:
<command name><key><flags><exptime><bytes>\r\n<data block>\r\n
注:\r\n在Windows下是enter鍵
a)<command name>可以是“set”“add”“replace”.
“set”表示按照相應的<key>存儲該數據,沒有的時候增加,有的覆蓋。
“add”表示按照相應的<key>添加該數據,但是如果該<key>已經存在則會操作失敗。
“replace”表示按照相應的<key>替換數據,但是如果該<key>不存在則會操作失敗。
b)<key>客戶端需要保存數據的key.
c)<flags>是一個16位的無符號整數(以十進制方式表示)。該標誌將和需要存儲的數據一起存儲,並在客戶端get數據時返回,客戶可以將此標誌用作特殊用途,此標誌對服務器來說是不透明的。
d)<exptime>過期的時間。若爲0表示存儲的數據永遠不過期(但可被服務器算法:LRU替換)。如果非0(Unix時間或者距離此時的秒數),當過期後,服務器可以保證用戶得不到該數據(以服務器時間爲標準)。
e)<bytes>需要存儲的字節數,當用戶希望存儲空數據時<bytes>可以爲0。
f)<data block>需要存儲的內容,輸入完成後,最後客戶端需要加上“\r\n”(直接點擊enter)作爲"命令頭”的結束標誌
PHP連接memcached
1:先安裝php的memcached擴展
wget http://www.lishiming.net/data/p_w_upload/forum/memcache-2.2.3.tgz
tar zxf memcache-2.2.3.tgz
cd memcache-2.2.3
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
安裝完後會有這樣類似的提示:
installing shared extensions:/usr/local/php/lib/php/extensions/no-debug-non-zts-200906267/
把這個記住,然後修改php.ini,把extension_dir="./"修改爲extension_dir=/usr/local/servers/php/lib/php/extensions/no-debug-non-zts-200906267"
並添加一行:extension=memcache.so
PHP連接memcached檢驗:
/usr/local/php/bin/php -m|grep memcache
下載測試php腳本
curl www.apelearn.com/study_v2/.memcache.txt >1.php2>/dev/null
/usr/local/php/bin/php 1.php
memcached實現session共享:
1:本實例是在lamp/lnmp環境下實現
編輯php.ini[session]添加兩行
session.save_handler = memcache
session.save_path = "tcp://192.168.0.9:11211"
或者httpd.conf對應的虛擬主機中添加
php_value session.save_handler "memcache"
php_value session.save_path "tcp://192.168.0.9:11211"
或者php-fpm.conf對應的pool中添加
php_value[session.save_handler] = memcache
php_value[session.save_path] = "tcp://192.168.0.9:11211"
memcached session測試:
wget http://study.lishiming.net/.mem_se.txt
mv .mem_se.txt /usr/local/apache2/htdocs/session.php
curl localhost/session.php
類似於1443702394<br><br>1443702394<br><br>i44nunao0g3o7vf2su0hnc5440
telnet 127.0.0.1 11211
get i44nunao0g3o7vf2su0hnc5440