yum install -y epel-release
yum install -y libevent memcached libmemcached
/etc/init.d/memcached start
netstat -lnp |grep mem
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN
1549/memcached
ps aux |grep memcached
memcached -d -p 11211 -u memcached -m 64 -c 1024 -P /var/run/memcached/memcached.pid
-d選項是啓動一個守護進程
-m是分配給Memcache使用的內存數量,單位是MB,這裏是200MB
-u是運行Memcache的用戶,如果當前爲 root 的話,需要使用此參數指定用戶。
-l是監聽的服務器IP地址
-p是設置Memcache監聽的端口,默認是11211
-c選項是最大運行的併發連接數,默認是1024
-P是設置保存Memcache的pid文件
相關的參數在vim /etc/init.d/memcached
vim /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="128"
OPTIONS="-l 192.168.1.124"
查看memcached運行狀態
memcached-tool 127.0.0.1:11211 stats
或者 echo stats |nc 127.0.0.1 11211 yum install -y nc
若安裝libmemcached後,可以使用命令
memstat --servers=127.0.0.1:11211 查看memcached服務狀態
[root@bogon ~]# telnet 192.168.1.124 11211
Trying 192.168.1.124...
Connected to 192.168.1.124.
Escape character is '^]'.
set key1 0(標記) 300 3
asd
STORED
get key1
VALUE key1 0 3
asd
END
set key2 111 20 5
asdfg
STORED
get key2
VALUE key2 111 5
asdfg
END
[root@bogon ~]# memcached-tool 192.168.1.124:11211 display
# Item_Size Max_age Pages Count Full? Evicted Evict_Time OOM
1 96B 330s 1 2 no 0 0 0
<command name> <key> <flags> <exptime> <bytes>\r\n <data block>\r\n
<command name> 可以是”set”, “add”, “replace”。
set”表示按照相應的<key>存儲該數據
,沒有的時候增加,有的覆蓋。
add”表示按照相應的<key>添加該數據,但是如果該<key>已>經存在則會操作失敗。
replace”表示按照相應的<key>替換數據,但是如果該<key>不存在則操作失敗。
PHP連接Memcached
PHP連接Memcached
先安裝php的memcache擴展
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-
20090626/
把這個記住,
vim /usr/local/php/etc/php.ini
然後修改php.ini,把 extension_dir = "./" 修改爲xtension_dir = "/usr/local/php/ext"
mkdir /usr/local/php/ext
cp /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/memcache.so
usr/local/php/ext
vim /usr/local/php/etc/php.ini
並添加一行extension="memcache.so"
/usr/local/php/bin/php -m 查看是否有沒有memcache.so
下載測試php腳本
/usr/local/php/bin/php 1.php
<?php
//連接Memcache Memcache
$mem = new Memcache;
$mem->connect("localhost", 11211);
//保存數據
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."<br>";
//替換數據
$mem->replace('key1', 'This is replace value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br>";
//保存數組數據
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60);
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br>";
//刪除數據
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br>";
//清除所有數據
$mem->flush();
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br>";
//關閉連接
$mem->close();
?>
memcached實現session共享
本實例是在lamp/lnmp環境下實現
編輯php.ini添加兩行
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 "
session.save_path = 如果memcached在其他的服務器上那麼就寫遠程服務器的ip
Memcached session測試
mv .mem_se.txt /usr/local/apache2/htdocs/session.php
<?php
session_start();
if (!isset($_SESSION['TEST'])) {
$_SESSION['TEST'] = time();
}
$_SESSION['TEST3'] = time();
print $_SESSION['TEST'];
print "<br><br>";
print $_SESSION['TEST3'];
print "<br><br>";
print session_id();
?>
curl localhost/session.php
類似於1443702394<br><br>1443702394<br><br>i44nunao0g3o7vf2su0hnc5440
telnet 127.0.0.1 11211
get i44nunao0g3o7vf2su0hnc5440