memcache緩存服務器

一、 MemCache 簡介
MemCache 是一個自由、源碼開放、高性能、分佈式的分佈式內存對象緩存系統,用於動態Web 應用以減輕數據庫的負載。它通過在內存中緩存數據和對象來減少讀取數據庫的次數,從而提高了網站訪問的速度。 MemCaChe 是一個存儲鍵值對的 HashMap,在內存中對任意的數據(比如字符串、對象等)所使用的 key-value 存儲,數據可以來自數據庫調用、 API調用,或者頁面渲染的結果。 MemCache 設計理念就是小而強大,它簡單的設計促進了快速部署、易於開發並解決面對大規模的數據緩存的許多難題,而所開放的 API 使得 MemCache能用於 Java、 C/C++/C#、 Perl、 Python、 PHP、 Ruby 等大部分流行的程序語言。

二,centos7.2+nginx+php+memcache+mysql
1、 安裝 nginx(在 192.168.1.10 主機操作)
(1) 安裝依賴包
yum -y install pcre-devel openssl-devel
(2) 解壓zlib和pcre
tar xzf pcre-8.39.tar.gz
tar zxf zlib-1.2.8.tar.gz
(3) 編譯安裝nginx
memcache緩存服務器
make && make install
(4)創建所需的用戶
useradd nginx -s /sbin/nologin -M
(4) 鏈接命令文件
ln -s /usr/local/nginx1.14/sbin/nginx /usr/local/sbin/
(5) 開啓nginx 並查看端口
memcache緩存服務器

2、 安裝 php(在 192.168.1.20 主機操作)
(1) 安裝依賴包
安裝libmcrypt
memcache緩存服務器

yum -y install libxml2-devel libcurl-devel openssl-devel bzip2-devel
(2) 編譯安裝php
memcache緩存服務器
make && make install
(3)複製php.ini配置文件,並修改
memcache緩存服務器
修改/etc/php.ini 文件,將 short_open_tag 修改爲 on,修改後的內容如下:
short_open_tag = On //支持 php 短標籤
Vim /etc/php.ini
memcache緩存服務器

(3) 創建php-fpm服務腳本
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm

(4)提供 php-fpm 配置文件並編輯:
memcache緩存服務器
修改164 listen = 0.0.0.0:9000
優化一下 pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35

(4) 開啓php並查看端口
memcache緩存服務器

3.製作測試頁面
Nginx
(1)修改nginx配置文件 65
memcache緩存服務器
(2)重啓nginx
nginx -s reload

php
(1) 創建所需文件夾
mkdir -p /var/www/bdqn
(2) 創建所需網頁
vim /var/www/bdqn/index.php
<?php
phpinfo();
?>

瀏覽器測試
memcache緩存服務器

  1. 安裝 memcached 服務端(在 192.168.1.30 主機操作)
    memcached 是基於 libevent 的事件處理。 libevent 是個程序庫,它將 Linux 的 epoll、 BSD 類操作系統的 kqueue 等事件處理功能封裝成統一的接口。即使對服務器的連接數增加,也能發揮 I/O 的性能。 memcached 使用這個 libevent 庫,因此能在 Linux、 BSD、 Solaris 等操作系統上發揮其高性能。首先先安裝 memcached 依賴庫 libevent
    (1) 安裝依賴包libevent
    memcache緩存服務器
    (2) 編譯安裝memcached
    memcache緩存服務器
    (3) 鏈接命令文件
    ln -s /usr/local/memcached/bin/memcached /usr/local/bin/
    (4) 開啓memcached並查看端口

    memcache緩存服務器

5.在php上安裝mecache客戶端
(1)創建 ./configure
memcache緩存服務器
(3) 編譯安裝memcache
memcache緩存服務器
./configure --enable-memcache --with-php-config=/usr/local/php1.10/bin/php-config && make && make install
配置環境變量:
進入用戶宿主目錄,編輯.bash_profile,爲系統環境變量 LD_LIBRARY_PATH 增加新的目錄,
需要增加的內容如下:
extension=/usr/local/php1.10/lib/php/extensions/no-debug-zts-20131226/memcache.so

memcache緩存服務器
(4) 重啓php
/etc/init.d/php-fpm restart
(5) 瀏覽器測試
memcache緩存服務器

memcache緩存服務器

(6) php添加一個測試網頁
memcache緩存服務器
<?php
$memcache = new Memcache;
$memcache->connect('192.168.1.30', 11211) or die ("Could not connect");
$version = $memcache->getVersion();
echo "Server's version: ".$version."<br/>";
$tmp_object = new stdClass;
$tmp_object->str_attr = 'test';
$tmp_object->int_attr = 123;
$memcache->set('key', $tmp_object, false, 900) or die ("Failed to save data at the server");
echo "Store data in the cache (data will expire in 900 seconds)<br/>";
$get_result = $memcache->get('key');
echo "Data from the cache:<br/>";
var_dump($get_result);
?>
(7) memcached 安裝telnet
yum -y install telnet
(8) 瀏覽器測試
memcache緩存服務器
(9) memcached上telnet測試
memcache緩存服務器

  1. 使用 memcache 實現 session 共享
    Php
    (1)配置 php.ini 中的 Session 爲 memcache 方式。
    vim /etc/php.ini末尾添加
    session.save_handler = memcache
    session.save_path="tcp://192.168.31.250:11211?persistent=1&weight=1&timeout=1&retry_interval=15"
    (2)測試 memcache 可用性
    在 web 服務器上新建/var/www/bdqn/test1.php 文件
    vim /var/www/bdqn/test1.php 添加
    <?php
    session_start();
    if (!isset($_SESSION['session_time']))
    {
    $_SESSION['session_time'] = time();
    }
    echo "session_time:".$_SESSION['session_time']."<br />";
    echo "now_time:".time()."<br />";
    echo "session_id:".session_id()."<br />";
    ?>
    (3)重啓php
    /etc/init.d/php-fpm restart
    (5) 瀏覽器測試

memcache緩存服務器

7、測試 memcache 緩存數據庫數據
(1) 在 Mysql 服務器上創建測試表
memcache緩存服務器
memcache緩存服務器

(2)php上製作測試頁
vim /var/www/bdqn/test3.php添加

<?php
$memcachehost = '192.168.1.30';
$memcacheport = 11211;
$memcachelife = 60;
$memcache = new Memcache;
$memcache->connect($memcachehost,$memcacheport) or die ("Could not connect");
$query="select * from test1 limit 10";
$key=md5($query);
if(!$memcache->get($key))
{
$conn=mysql_connect("192.168.1.50","xgp","123.com");
mysql_select_db(testdb1);
$result=mysql_query($query);
while ($row=mysql_fetch_assoc($result))
{
$arr[]=$row;
}
$f = 'mysql';
$memcache->add($key,serialize($arr),0,30);
$data = $arr ;
}
else{
$f = 'memcache';
$data_mem=$memcache->get($key);
$data = unserialize($data_mem);
}
echo $f;
echo "<br>";
echo "$key";
echo "<br>";
//print_r($data);
foreach($data as $a)
{echo "number is <b><font color=#FF0000>$a[id]</font></b>";
echo "<br>";
echo "name is <b><font color=#FF0000>$a[name]</font></b>";
echo "<br>";
}
?>
(3)瀏覽器測試
memcache緩存服務器
(4)memcached上telnet測試

memcache緩存服務器

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