Memcached

---------------------------------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」,若是存在則證實擴展成功

http://192.168.131.147

相關文章
相關標籤/搜索