程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php操作Memcache,phpmemcache

php操作Memcache,phpmemcache

編輯:關於PHP編程

php操作Memcache,phpmemcache


一、memcache基本的介紹

是一個高性能分布式內存對象緩存系統。

 

和mysql比較,進行理解memcache

(1)該軟件是一個c/s架構,

(2)mysql的數據是存儲到哪裡的?是存儲到磁盤裡面的。

memcache的數據是存儲到內存裡面。

(3)mysql的數據存儲是,由數據庫,數據表,數據的記錄,存儲數據是按照表的結構進行存儲的。

memcache的數據存儲格式是:key/value的格式,來存儲的,相當於在內存裡面有一張兩列的哈希表。類似於php的裡面的關聯數組

key (鍵名)      

二、基本的原理:

 

比如有一個查詢系統,查詢某個學生的信息:

 

 

三、安裝軟件

(1)准備軟件,為了方便管理,把該文件拷貝到和apache或mysql或php同一級目錄下面。

 

 

 

(2)開始安裝:

把該軟件安裝成windows的一個服務,便於管理。

步驟:

以管理員的方式,打開cmd(命令提示符),進入到 memcached文件所在的目錄。

可以使用memcahced.exe –h  查看幫助命令。

memcache –d install  開始安裝:

 

安裝完成後,要完成啟動該服務,

memcached –d start

 

查看是否啟動成功,可以通過計算機管理裡面的服務選項查看。

 

memcache的默認端口號是11211,可以通過查看端口,來判斷是否開啟該服務,

通過使用netstat –an命令,來查看當前計算機裡面監聽的服務。

 

memcached –d stop停止memcache的服務。

 

(3)在安裝時,對應的一些參數設置。

比如設置,緩存的大小。

-p 監聽的端口
-l
連接的IP地址, 默認是本機
-d start 啟動memcached服務
-d restart 重起memcached服務
-d stop|shutdown 關閉正在運行的memcached服務
-d install 安裝memcached服務
-d uninstall 卸載memcached服務
-u 以的身份運行 (僅在以root運行的時候有效)
-m 最大內存使用,單位MB。默認64MB

-M 內存耗盡時返回錯誤,而不是刪除項
-c 最大同時連接數,默認是1024
-f 塊大小增長因子,默認是1.25
-n 最小分配空間,key+value+flags默認是48
-h 顯示幫助

-v  輸出警告和錯誤信息。

-vv 打印客戶端的請求和返回信息

-i 打印memcached和libevent的版權信息

四、軟件操作

1、直接使用telnet遠程協議連接,(類似於mysql客戶端的黑窗口)(了解)

打開cmd進行輸入:

Telnet ip地址(域名)端口號

(1)設置數據,向memcache裡面添加數據

添加數據:

語法:

add   鍵名 0|1(是否壓縮)緩存周期值的長度   [按回車,進行輸入要添加的數據]

0表示不壓縮,1表示要壓縮

緩存周期:單位是秒,

值的長度:長度的單位和客戶端有關,此處是字節。

 

注意:如果鍵已經存在,則添加失敗。

 

修改數據:

replace

語法格式和add是一樣的。

 

注意:如果鍵不存在,則修改失敗,只能修改已經存在的鍵。

 

設置數據:

set命令和add的語法是一樣的。

如果使用set命令,如果鍵已經存在,則是完成修改,如果鍵不存在則是添加操作。

 

(2)獲取數據

get 鍵名

(3)刪除數據

delete 鍵名

 

flush_all  清空所有的數據,

可以設置某一個有效期,

flush_all  秒數,在多少秒之後,清空所有的鍵。

(4)數據追加

append 在原有值的後面追加數據

 

preappend 在原有值的前面追加數據。

(5)查看當前狀態的一個命令:

通過該stats 命令能夠獲取,執行了多少次的get查詢,有多少次能夠使用get查詢到數據,有多少次能夠使用get查詢失敗,計算命中率,

計算命中率  get成功查詢的次數/get的總的查詢次數,通過命中率來判斷memcache服務性能。

 

2、使用php程序當成客戶端,連接memcache

要安裝memcache的擴展。

(1)要准備memcache     php的擴展,在安裝擴展時,要和php的版本一致。

 

 

 

(2)把對應的擴展拷貝到到php安裝目錄ext目錄裡面。

 

 

 

(3)打開php.ini文件,要開啟該擴展,完成後,要重啟apache,

 

(4)測試,是否安裝擴展成功,使用phpinfo();函數

 

 

3、php操作memcache.

(1)實例化一個對象。

$mem = new Memcache();

(2)連接memcache,使用connect函數。

  $mem->connect(主機名,端口號)

  $mem->add/set(鍵名,值,是否壓縮,緩存時間)

  $mem->get(鍵名)

 

(3)對存儲的數據類型進行討論。

 

php的數據類型:標量數據類型的存儲方式。

 

php的標量類型在memcac he裡面存儲都是轉換成字符串的形式來存儲的。

 

php的數據類型:數組的形式。

 

 

在存儲數組時,把數組序列化之後,存儲到 memcache裡面的,在取出數組數據時,自動給我們反序列化。數組的序列化和反序列化,是有add和get函數完成的,無需我們自己干預。

 

 

4、入門案例的使用。

根據一個sql取出的數據,把sql取出的數據,給緩存到memcache裡面,當下次再操作該sql語句的時候,則直接從memcache裡面獲取。

 

 

5、典型的一個案例應用

 

七、memcache細節討論

1、緩存周期(有效期)

緩存周期的設置有兩種方式:

如果緩存周期設置為0表明此數據永不過期

第一種使用:秒數,最大不能超過30天,即2592000秒,

第二種使用:使用時間戳,該時間戳是到的哪個時間點。比如我們要把一個數據緩存60天,

$mem->add($key,$value,0,time()+60*24*3600)

2、惰性刪除,

就是說,緩存的數據,到期後,不會自動刪除,當get數據的時候,查看有沒有到期,如果到期了,則再刪除該數據。

memcache不會開啟進程來監視鍵是否過期,省memcache的資源,也省cpu.

3、Least Recently Used(LRU)

最近最少使用原則,

當前存儲的數據的在memcache裡面空間已經占滿後,則memcache會把不活躍(get或set次數比較少的)的數據(不管是否到期)清除,讓新的數據給存儲進來。

4、安全性

memcache定位就是做數據的緩存的,不是數據的持久存儲的,因此沒有做一些用戶的驗證,目的提高連接速度,發揮自己的獨特功能。

 

memcahe該軟件本身沒有提供一些安全機制,如果要限制使用,則只能在操作系統的層面來解決,比如window系統、安裝防火牆的軟件,在linux下面使用iptables,seclinux(安全機制)

 

5、memcache比較適合於存儲哪些數據。

存儲的數據的特點:

訪問比較頻繁,

安全性不高,丟失無所謂,

修改比較頻繁的數據,比如一些用戶的在線狀態,

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved