1. 程式人生 > >memcached 快速入門

memcached 快速入門

memcache 快速入門

Memcache簡介

Memcached是什麽?
Memcached是由Danga Interactive開發的,高性能的,分布式的內存對象緩存系統,
用於在動態應用中減少數據庫負載,提升訪問速度。

Memcached能緩存什麽?
通過在內存裏維護一個統一的巨大的hash表,Memcached能夠用來存儲各種格式的數據,
包括圖像、視頻、文件以及數據庫檢索的結果等。

Memcached快麽?
非常快。Memcached使用了libevent(如果可以的話,在linux下使用epoll)來均衡任何數量的打開鏈接,
使用非阻塞的網絡I/O,對內部對象實現引用計數(因此,針對多樣的客戶端,對象可以處在多樣的狀態),


使用自己的頁塊分配器和哈希表,因此虛擬內存不會產生碎片並且虛擬內存分配的時間復雜度可以保證為O(1)。
Danga Interactive為提升Danga Interactive的速度研發了Memcached。

Memcached的特點
Memcached的緩存是一種分布式的,可以讓不同主機上的多個用戶同時訪問,
因此解決了共享內存只能單機應用的局限,更不會出現使用數據庫做類似事情的時候,
磁盤開銷和阻塞的發生。

緩存數據:
1.在內存中緩存數據 2.數據形態以key->value結構 3.安全度非常差的

Memcache安裝

Windows下操作

1 在網上下載memcached-1.2.1-win32.zip。解壓放某個盤下面,比如在c:\memcached
2 在終端(cmd)下:
D:\AppServ>memcached.exe -d install 安裝
D:\AppServ>memcached.exe -d uninstall 卸載
D:\AppServ>memcached.exe -d start 啟動
D:\AppServ>memcached.exe -d stop 停止
memcached.exe -h 獲取所有幫助

3 在啟動之後連接:
D:\AppServ> telnet 127.0.0.1 11211 --連接memcache端口11211
使用quit退出。
4 其他命令參數:
啟動Memcache 常用參數
-p <num> 設置端口號(默認不設置為: 11211)
-U <num> UDP監聽端口(默認: 11211, 0 時關閉)
-l <ip_addr> 綁定地址(默認:所有都允許,無論內外網或者本機更換IP,
有安全隱患,若設置為127.0.0.1就只能本機訪問)
-d 獨立進程運行
... -d start 啟動memcached服務
... -d restart 重起memcached服務
... -d stop|shutdown 關閉正在運行的memcached服務
... -d install 安裝memcached服務
... -d uninstall 卸載memcached服務
-u <username> 綁定使用指定用於運行進程<username>
-m <num> 允許最大內存用量,單位M (默認: 64 MB)
-P <file> 將PID寫入文件<file>,可以使得後邊進行快速進程終止, 需要與-d 一起使用
-M 內存耗盡時返回錯誤,而不是刪除項
-c 最大同時連接數,默認是1024
-f 塊大小增長因子,默認是1.25
-n 最小分配空間,key+value+flags默認是48
-h 顯示幫助

PHP開啟Memcache模塊

1.phpinfo()檢測是否有memcache擴展

2.php擴展目錄 extension_dir
php_memcache.dll放置到php擴展目錄下

3.php配置文件修改
extension=php_memcache.dll

4.重啟apache服務


Linux下安裝操作:

2.1 #為php環境安裝memcache擴展

首先下載php7.0支持的擴展包 pecl-memcache-php7.zip
地址:https://github.com/websupport-sk/pecl-memcache/archive/php7.zip

1. 將pecl-memcache-php7.zip文件傳到服務器上 /root
2. 解壓文件後進入此目錄
unzip pecl-memcache-php7.zip
cd pecl-memcache-php7
3. 由於目錄中沒有configure配置環境文件
執行 /usr/local/php/bin/phpize 來準備一個編譯環境
4. 配置: 加配置
./configure --with-php-config=/usr/local/php/bin/php-config

5. make && make install 編譯和安裝

6. 安裝成功後就會產生一個memcache.so文件
/usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/
7. 修改php配置文件
vim /usr/local/php/etc/php.ini
添加以下信息
722行 extension_dir=‘/usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/‘;
extension="memcache.so";
8. 重啟apache服務即可(查看phpinfo())




2.2 #安裝memcache服務

memcached-1.4.4-3.el6.i686.rpm

a.首先掛載ISO鏡像文件 DVD1.ISO
mount /dev/sr0 /mnt/cdrom/

b.安裝memcached
yum -y install memcached

c.添加memcache用戶
useradd memcache

d.啟動memcache服務
memcached -d -m 128 -l 127.0.0.1 -p 11211 -u memcache


查看端口
netstat –tunpl|grep :11211
win+r打開命令行窗口 連接測試
telnet 192.168.185.252 11211
註意:
如果輸入telnet命令的時候 出現telnet不是內部命令
windows系統->控制面板->程序和功能->打開和關閉Windows功能->勾選 telnet客戶端

stats memcache命令:查看當前狀態

e.設置開機自啟動
chkconfig memcached on


f.如何殺掉後臺進程
pkill memcached

Memcache相關操作

####stats 查看狀態
STAT pid 1552 服務進程的進程ID
STAT uptime 3792 服務從啟動到當前所經過的時間,單位是秒。
STAT time 1262517674 服務器所在主機當前系統的時間,單位是秒。
STAT version 1.2.6 組件的版本。這裏是我當前使用的1.2.6。
STAT pointer_size 32 服務器所在主機操作系統的指針大小,一般為32或64.
STAT curr_items 1 表示存放當前的所有緩存對象的數量。不包括已經從緩存中刪除的對象。
STAT total_items 2 表示從啟動到當前,系統存儲過的所有對象數量,包括已經刪除的對象。
STAT bytes 593 表示系統存儲緩存對象所使用的存儲空間,單位為字節。
STAT curr_connections 2 表示當前系統打開的連接數。
STAT total_connections 28 表示從memcached服務啟動到當前時間,系統打開過的連接的總數。

set 寫入緩存
set 鍵名 標記 有效時間 數據的長度

set love 10 0 10
i love you
鍵名
最大不能超過250個字符
標記
是一個16位的無符號的整數,該標誌將和需要存儲的數據一起存儲,並在客戶端get數據時返回
有效時間
單位為秒
數據長度
單位是字節
數據的值
最大不能超過1024kb

get 獲取緩存
get 鍵名
get love


####delete 刪除緩存
delete 鍵名
delete love
flush_all清空所有緩存


###PHP與Memcache的使用
//實例化Memcache
$memcache = new Memcache();

//連接Memcache
$memcache->connect(‘127.0.0.1‘,‘11211‘);
$memcache->addServer(‘127.0.0.1‘,‘11211‘);

//保存數據
$memcache->set(‘name‘,‘xiaohigh‘,MEMCACHE_COMPRESSED,60);

//獲取數據
$memcache->get(‘name‘)

//清除所有數據
$memcache->flush();


###PHP Memcahe類
connect(ip, port) 連接一臺memcache服務器
addServer(ip, port) 添加一臺memcache服務器
getExtendedStats() 獲取連接池中所有的服務器信息
getServerStatus(host, port) 獲取指定服務器的連接狀態
add(key, value, tag, expires) 添加一條數據
replace(key, value, tag, expires) 修改一條數據
set(key, value, tag, expires) 添加或修改一條數據
get(key) 根據鍵獲取值
delete(key) 刪除指定一條數據
flush() 刪除全部
close() 關閉連接
getStats() 獲取memcache服務器信息 返回數組
getVersion() 獲取m emcache服務器版本號


本文出自 “苦逼php” 博客,請務必保留此出處http://haibobo.blog.51cto.com/4799843/1943796

memcached 快速入門