memcache

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章