---------------------------------Memcached----------------------------------------php
Memcached 是一個高性能的分佈式內存對象緩存系統,用於動態Web應用以減輕數據庫負載.它經過在內存中緩存數據和對象來減小讀取數據庫的次數,html
從而提升動態、數據庫驅動網站的速度.算法
緩存通常用來保存一些經常使用存取的對象或數據,經過緩存來存取對象或數據要比磁盤存取快.把常常須要存取的對象或數據緩存在內存中,內存中緩存數據庫
的這些數據經過API的方式被存取.apache
Memcached 特徵瀏覽器
1.協議簡單緩存
其使用基於文本行的協議,能直接經過telnet在Memcached服務器上存取數據.服務器
2.基於libevent的事件處理網絡
libevent利用C開發的程序庫,它將BSD系統的kqueue,Linux系統的epoll等事件處理功能封裝成爲一個接口,確保即便服務器端的連接數增長也能發揮很好的性能.併發
Memcached利用這個庫進行異步事件處理.
3.內置的內存管理方式
有一套本身管理內存的方式,這套方式很是高效,全部的數據都保存在Memcached內置的內存中,當存入的數據佔滿空間時,使用LRU算法自動刪除不使用的緩存,即重用過時的內存間.
Memecached不考慮數據的容災問題,一旦重啓全部數據所有丟失.
4.互不通訊的分佈式
Memecached服務器之間互不通訊,都是獨立的存取數據,不共享任何信息。經過對客戶端的設計,讓Memcached具備分佈式,能支持海量緩存和大規模應用.
Memcached 環境創建
1.yum install memcached -y [安裝Memcached]
2.#systemctl start memcached[啓動服務]
#systemctl enable memcached
Memcached啓動參數說明
-p:監聽的TCP端口(默認:11211)
-U:監聽的UDP端口(默認:11211,0表示不監聽)
-s:用於監聽的UNIX套接字路徑(禁用網絡支持)
-a:UNIX套接字訪問掩碼,八進制數字(默認:0700)
-l:監聽的IP地址(默認:INADDR_ANY,全部地址)
-d:做爲守護進程來運行
-r:最大核心文件限制
-u:設定進程所屬用戶(只有root用戶可使用這個參數)
-m:單個數據項的最大可用內存,以MB爲單位.(默認:64MB )
-M:內存用光時報錯.(不會刪除數據)
-c:最大併發鏈接數.(默認:1024)
-v:提示信息(在事件循環中打印錯誤/警告信息)
-vv:詳細信息(還打印客戶端命令/響應)
-vvv:超詳細信息(還打印內部狀態的變化)
-k:鎖定全部內存頁。注意你能夠鎖定的內存上限.試圖分配更多內存會失敗的,因此留意啓動守護進程時所用的用戶可分配的內存上限.不是前面的
-u參數;在sh下,使用命令"ulimit -S -lNUM_KB"來設置)
-h:打印這個幫助信息並退出;
-i:打印memcached和libevent的許可;
-P:保存進程ID到指定文件,只有在使用 -d 選項的時候纔有意義;
-f:塊大小增加因子;(默認:1.25 )
-n :分配給key+value+flags的最小空間(默認:48)
-L:嘗試使用大內存頁(若是可用的話),提升內存頁尺寸能夠減小"頁表緩衝(TLB)"丟失次數,提升運行效率; 爲了從操做系統得到大內存頁,memcached會把所有數據項分配到一個大區塊;
-D:使用x做爲前綴和ID的分隔符;這個用於按前綴得到狀態報告。默認是":"(冒號);若是指定了這個參數,則狀態收集會自動開啓;若是沒指定,則須要用命令"stats detail on"來開啓.
-t:使用的線程數(默認:4 )
-R:每一個鏈接可處理的最大請求數;
-C :禁用CAS
-b:設置後臺日誌隊列的長度(默認:1024)
-B:綁定協議 - 可能值:ascii,binary,auto(默認)
-I:重寫每一個數據頁尺寸;調整數據項最大尺寸;
4. 示例
//*啓動memecached守護進程(-d),分配Memecached內存使用量爲256M,以root身份運行(-u),監聽端口爲11211,接收最大併發鏈接數爲1024個(-c),pid文件位置爲/tmp目錄下(-P)
#memcached -d -m 256 -u root -p 11211 -c 1024 -P /tmp/memcached.pid
5.查看Memcached狀態
#telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
stats ←輸入命令
STAT pid 4354←memcache服務器的進程ID
STAT uptime 1629←服務器已經運行的秒數
STAT time 1477994282←服務器當前的unix時間戳
STAT version 1.4.15←memcache版本
STAT libevent 2.0.21-stable←libevent版本
STAT pointer_size 64←當前操做系統的指針大小(32位系統通常是32bit,64就是64位操做系統)
STAT rusage_user 0.059374←進程的累計用戶時間
STAT rusage_system 0.075867←進程的累計系統時間
STAT curr_connections 10←服務器當前存儲的items數量
STAT total_connections 11←從服務器啓動之後存儲的items總數量
STAT connection_structures 11←服務器分配的鏈接構造數
STAT reserved_fds 20
STAT cmd_get 0←get命令(獲取)總請求次數
STAT cmd_set 0←get命令(保存)總請求次數
STAT cmd_flush 0←flush命令請求次數
STAT cmd_touch 0←touch命令請求次數
STAT get_hits 0←總命中次數
STAT get_misses 0←總未命中次數
STAT delete_misses 0←delete命令未命中次數
STAT delete_hits 0←delete命令命中次數
STAT incr_misses 0←incr命令未命中次數
STAT incr_hits 0←incr命令命中次數
STAT decr_misses 0←decr命令未命中次數
STAT decr_hits 0←decr命令命中次數
STAT cas_misses 0←cas命令未命中次數
STAT cas_hits 0←cas命令命中次數
STAT cas_badval 0←使用擦拭次數
STAT touch_hits 0←touch命令未命中次數
STAT touch_misses 0←touch命令命中次數
STAT auth_cmds 0←認證命令處理的次數
STAT auth_errors 0←認證失敗數目
STAT bytes_read 13←總讀取字節數(請求字節數)
STAT limit_maxbytes 10485760 ←分配給memcache的內存大小(字節)
STAT accepting_conns 1←服務器是否達到過最大鏈接( 0/1)
STAT listen_disabled_num 0←失效的監聽數
STAT threads 4←當前線程數
STAT conn_yields 0←鏈接操做主動放棄數目
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT malloc_fails 0
STAT bytes 0←當前存儲佔用的字節數
STAT curr_items 0←當前存儲的數據總數
STAT total_items 0←啓動以來存儲的數據總數
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT evictions 0←爲獲取空閒內存而刪除的items數(分配給memcache的空間用滿後須要刪除舊的items來獲得空間分配給新的items)
STAT reclaimed 0←已過時的數據條目來存儲新數據的數目
STAT crawler_reclaimed 0
STAT lrutail_reflocked 0
END
quit→退出
Memcached 的PHP 擴展
1.#yum install httpd php php-mbstring php-pear libmemcached -y[安裝軟件]
#yum install php-pecl-memcache.x86_64[須要此軟件包纔會有memcached.ini文件]
2.確認memcached模塊已被擴展
#vi /etc/php.d/memcached.ini
//*確認第2行
extension = memcached.so
3.編輯index.php
#cd /var/www/html
#vi index.php
<?php phpinfo() ?>
4.啓動apache
#systemctl restart httpd
5.打開瀏覽器查看php信息,在頁面中找」memcached」,若是存在則證實擴展成功