Previous Article Next Article php 使用 memcached 存取資料,在記憶體裡,加快速度
Posted in Linux

php 使用 memcached 存取資料,在記憶體裡,加快速度

php 使用 memcached 存取資料,在記憶體裡,加快速度 Posted on 2015 年 06 月 07 日Leave a comment

Memcached 是一套分布式的快取系統,更多理論的說明可以參考這篇

與 redis 同為 NoSQL 記憶體資料庫

基本上就是 PHP 要實現把資料透過記憶體存取,就要用 memcached,讓存取速度變快,

但聽說 Memcache 與 Memcached 是不同的,我這邊是測試 memcached

php memcache 獨立用php 實現,是舊客戶端,多個問題,而且功能少,屬性也可設置的少
php memcached 是基於原生的c的libmemcached的擴展,更加完善,建議替換為php memcached

安裝 memcached

rpm -Uvh http://mirrors.kernel.org/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install memcached

確認 /etc/sysconfig/memcached (基本上不用動)

 PORT="11211"   # listen port number
 USER="memcached"
 MAXCONN="1024"
 CACHESIZE="64" # 64 MBytes,記憶體大小
 OPTIONS=""

啟用 memcached

/etc/init.d/memcached start

安裝 memcached for PHP

yum install zlib-devel libmemcached-devel php-pear php-devel gcc gcc-c++ php php-mbstring php-mysql
yum install php-pecl-memcached

以上 memcached for php 的版本是 2.1.0

也可以用 pecl 安裝,版本會是 2.2.0

pecl install -f memcached

確認 /etc/php.d/memcached.ini

extension=memcached.so

修改 /etc/php.ini

session.save_handler = memcached
session.save_path = "localhost:11211"

Apache 要 restart 一下

service httpd restart

PHP 程式

<?php
$memcache = new memcached();
$memcache->addServer('localhost',11211);
$memcache->set('memcached','hello memcached!<br/>');
echo $memcache->get('memcached');

執行

php -f memcached.php

結果,意思是我把 value 為 hello memcached!<br/> ,它的 key 是 memcached 寫入,再透過 key = memcached 取 value 出來

hello memcached!<br/>

 

參考 : https://www.digitalocean.com/community/tutorials/how-to-store-php-sessions-in-memcached-on-a-centos-vps

查看 memcached 的統計資料

echo "stats" | nc localhost 11211
# or
memcached-tool localhost:11211 stats

 

如果要用 perl 的話

yum install -y perl-Cache-Memcached.noarch
use strict;
use Cache::Memcached();
my $memcached = new Cache::Memcached{'servers'=>["localhost:11211"],debug=>1};
$memcached->flush_all();
for(my $i=0;$i<51;$i++){
    $memcached->set($i, "1k");
}
print $memcached->get(50);
$memcached->disconnect_all();

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *