memcached內存數據庫——部署及操做

概述

 Memcached 是一個高性能的分佈式內存對象緩存系統,用於動態Web應用以減輕數據庫負載。它經過在內存中緩存數據和對象來減小讀取數據庫的次數,從而提升動態、數據庫驅動網站的速度。Memcached基於一個存儲鍵/值對的hashmap。其守護進程(daemon )是用C寫的,可是客戶端能夠用任何語言來編寫,並經過memcached協議與守護進程通訊。php

特色

一、協議簡單;
二、基於libevent的事件處理;
三、內置內存存儲方式;
四、memcached不互相通訊的分佈式。

存儲方式

爲了提升性能,memcached中保存的數據都存儲在memcached內置的內存存儲空間中。因爲數據僅存在於內存中,所以重啓memcached、重啓操做系統會致使所有數據消失。另外,內容容量達到指定值以後,就基於LRU(Least Recently Used)算法自動刪除不使用的緩存。memcached自己是爲緩存而設計的服務器,所以並無過多考慮數據的永久性問題。mysql

實驗環境

memcached服務器 192.168.13.128 (memcached-1.5.6.tar.gz、libevent-2.1.8-stable.tar.gz)
memcache客戶端 192.168.13.129 (memcache-2.2.7.tgz 、LAMP)

1,部署memcached服務器

[root@server ~]# yum install -y gcc gcc-c++ make  ##安裝環境組件
[root@server ~]# mount.cifs //192.168.100.3/LNMP-C7 /mnt/
Password for root@//192.168.100.3/LNMP-C7:  
[root@server ~]# cd /mnt/memcached/
[root@server memcached]# tar zxvf libevent-2.1.8-stable.tar.gz -C /opt/   ##事件通知庫 
[root@server memcached]# tar zxvf memcached-1.5.6.tar.gz -C /opt/  ##解壓事件庫服務端
[root@server memcached]# cd /opt/libevent-2.1.8-stable/
[root@server libevent-2.1.8-stable]# ./configure \  ##配置
> --prefix=/usr/local/libevent   ##安裝路徑
[root@server libevent-2.1.8-stable]# make && make install   ##編譯安裝
[root@server libevent-2.1.8-stable]# cd /opt/memcached-1.5.6/
[root@server memcached-1.5.6]# ./configure \
> --prefix=/usr/local/memcached \
> --with-libevent=/usr/local/libevent  ##關聯libevent事件通知庫
[root@server memcached-1.5.6]# make && make install
[root@server memcached-1.5.6]# ln -s /usr/local/memcached/bin/* /usr/local/bin/  ##創建軟鏈接
[root@server memcached-1.5.6]# memcached -d -m 32m -p11211 -uroot  ##開啓服務
##-d守護進程 ;-m緩存大小32M ;-p端口11211
[root@server memcached-1.5.6]# netstat -ntap | grep memcached  ##查看端口
[root@server memcached-1.5.6]# systemctl stop firewalld.service 
[root@server memcached-1.5.6]# setenforce 0
[root@server memcached-1.5.6]# yum install telnet -y  ##安裝telnet軟件
[root@server memcached-1.5.6]# telnet 127.0.0.1 11211   ##本地測試登陸

add username 0 0 7   ##0:不設置序列號0:不設置過時事件7:字節長度
1234567
STORED
add users 0 0 7
123
ERROR
get username    ##查看
VALUE username 0 7
1234567
END
gets username  ##查看
VALUE username 0 7 1   ##1:更新次數
1234567
END

2,在memcache客戶端安裝lamp結構

##lamp結構見前博客有具體操做
##測試數據工做是否正常
[root@client php-5.6.11]# mysql -u root -pabc123   //進入數據庫

CREATE DATABASE sky;   //建立一個數據庫爲 sky
GRANT all ON sky.* TO 'skyuser'@'%' IDENTIFIED BY 'admin123';  //提權
flush privileges;   //刷新數據庫
##修改PHP首頁
[root@client php-5.6.11]# vim /usr/local/httpd/htdocs/index.php

        <?php
        $link=mysql_connect('192.168.13.129','skyuser','admin123');
        if($link) echo "<h1>Success!!</h1>";
        else echo "Fail!!";
        mysql_close();
        ?>

3,在客戶端安裝memcache客戶端

[root@client ~]# yum install autoconf -y
[root@client ~]# cd /mnt/memcached/
[root@client memcached]# tar zvxf memcache-2.2.7.tgz -C /opt/
[root@client memcached]# cd /opt/memcache-2.2.7/
[root@client memcache-2.2.7]# /usr/local/php5/bin/phpize  ##增長PHP模塊生成腳本
[root@client memcache-2.2.7]# ./configure \
> --enable-memcache \   ##開啓memcache
> --with-php-config=/usr/local/php5/bin/php-config  ##關聯PHP配置文件
[root@client memcache-2.2.7]# make && make install
/usr/local/php5/lib/php/extensions/no-debug-zts-20131226/  ##共享文件位置,後面須要用到
[root@client memcache-2.2.7]# vim /usr/local/php5/php.ini  ##修改php配置文件
extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-zts-20131226/" ##共享文件位置
extension = memcache.so  ##指向memcache模塊

4,用客戶端檢測服務端是否正常鏈接

[root@client memcache-2.2.7]# vim /usr/local/httpd/htdocs/index.php
<?php
$memcache=new Memcache();
$memcache->connect('192.168.13.128',11211);  ##鏈接Memcached服務器地址
$memcache->set('key','Memcache test Successfull!',0,60);
$result=$memcache->get('key');
unset($memcache);
echo$result;
?>
[root@client memcache-2.2.7]# service httpd stop  ##重啓
[root@client memcache-2.2.7]# service httpd start
##瀏覽器訪問

memcached內存數據庫——部署及操做

5,memcache數據庫基本操做

新建數據:

add username 0 0 7  
//添加數據(兩個0表示:不進行壓縮和序列化標識,數據過時時間爲永不過時;標識號是7就須要輸入7位數。)
allways   //輸入一個7位數

查詢數據:

get username  //查詢數據
gets username

更新數據:

set username 0 0 10       //更新信息,若鍵名不存在,則自行添加
everything

replace username 0 0 8    //更新信息,若鍵名不存在,則報錯
12345678

檢測/查看 更新數據:

gets username  //檢測更新
VALUE username 0 8 4
12345678

追加數據:

append username 0 0 7       //鍵值後追加數據
example

prepend username 0 0 2     //鍵值前追加數據
un

清除數據:

delete username     //清除指定的鍵值數據
flush_all           //清除全部緩存數據
OK

查看服務器統計信息:

stats                  //顯示狀態信息
stats items            //返回全部鍵值對的統計信息
stats cachedump 1 0    //返回指定存儲空間的鍵值對 
stats slabs            //顯示各個slab的信息
stats sizes           //輸出全部item的大小和個數
stats reset           //清空統計數據

謝謝閱讀!

相關文章
相關標籤/搜索