Memcached詳解

1、Memcached概念php

memcached基本概念c++

Memcached是danga的一個項目,最先是LiveJournal 服務的,最初爲了加速 LiveJournal 訪問速度而開發的,後來被不少大型的網站採用。 官方網站: www.danga.com 和 memcached.org程序員

Memcached是一個高性能的分佈式的內存對象緩存系統,目前全世界很多人使用這個緩存項目來構建本身大負載的網站,來分擔數據庫的壓力,經過在內存裏維護一個統一的巨大的hash表,它可以用來存儲各類格式的數據,包括圖像、視頻、文件以及數據庫檢索的結果等。簡單的說就是將數據調用到內存中,而後從內存中讀取,從而大大提升讀取速度。(注: 摘自百度全科)ajax

2、Memcached--使用好處算法

三種方案的比較數據庫

1. 數據庫緩存

2. 頁面靜態化安全

3. memcached 緩存技術服務器

3、Memcached--原理示意圖網絡

簡單的說: memcached就是在內存 中維護一張巨大的hash表,經過本身 的一套算法來維護數據的操做,這個 算法比較複雜,這裏咱們只作簡單的 介紹,對咱們PHP程序員而言,重點 掌握如何在項目如何使Memcached 技術. [示意圖]

4、Memcached-安裝

安裝步驟

①下載memcached軟件

②將memcached軟件拷貝到某個目錄,最好放在php開發環境目錄下, 便於管理

③安裝 memcached –d install [卸載使用 memcached -d uninstall]

④啓動 memcached 服務

  (1)直接經過界面啓動該服務

  (2)在控制檯下啓動 memcached –d start [命令一覽表]

⑤查看memcached 服務是否啓動成功! 默認端口11211

查看 memcached 可以使用命令: memcached -h

5、telnet操做Memcached 

許多語言都實現了鏈接memcached的客戶端,其中以Perl、 PHP爲主。

僅僅memcached網站上列出的語言就有: • Perl • PHP • Python • Ruby • C# • C/C++

使用Telnet程序(客戶端)對Memcached進行CRUD操做!,這 裏咱們須要使用到Memcached給咱們提供的命令

6、php操做Memcached

經過php程序操做Memcached服務幾種形式

1.安裝並配置Memcache擴展庫

在php.ini文件添加: extension=php_memcache.dll 並把對應的dll文件拷貝到 ext目錄下

2.使用php對Memcached進行CRUD操做 [配合php幫助手冊]

7、memcached-client操做 

疑問: 若是咱們沒有memcache.dll文件,

咱們能不能去操做memcached 內存數據呢?

特色:

1.不須要開啓memcache擴展

2.使用fsockopen()套接字鏈接memcached

3.一樣執行執行CRUD

8、Memcached機制深刻了解

①基於c/s架構 ,協議簡單

c/s架構,此時memcached爲服務器端,咱們可使用如PHP,c/c++等程序鏈接memcached服務器。

memcached的服務器客戶端通訊並不使用XML等格式,而使用簡單的基於文本行的協議。所以,經過telnet也能在memcached上保存數據、取得數據

②基於libevent的事件處理

libevent是一套跨平臺的事件處理接口的封裝,可以兼容包括這些操做系統: Windows/Linux/BSD/Solaris 等操做系統的的事件處理。

Memcached 使用libevent來進行網絡併發鏈接的處理,可以保持在很大併發狀況下,仍舊可以保持快速的響應能力。

③內置內存存儲方式

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

④基於客戶端的分佈式

memcached儘管是「分佈式」緩存服務器,但服務器端並無分佈式功能。各個memcached不會互相通訊以共享信息。那麼,怎樣進行分佈式呢?這徹底取決於客戶端的實現。如圖

9、Memcached細節討論

1. 生命週期

2. Memcached數據存在什麼地方

3. Memcached最佳實踐

① 將從數據庫查詢的數據放入Memcached (舉例說明-僞代碼)

② 將Session數據放入到Memcached(舉例說明)

保證memcache擴展開啓,memcachd運行

設置php.ini中session.save_handler=memcache

設置php.ini中session.save_path=tcp://localhost:11211

也能夠經過php函數ini_set() 函數在頁面設置.

4.Memcached的數據是無用戶狀態的.即不會和某個用戶綁定

5.Memcached訪問安全性(舉例)

設置防火牆 iptables -a input -p 協議 -s 能夠訪問ip -dport 端口 -j ACCEPT

什麼樣的數據適合放入memcached中?

變化頻繁,具備不穩定性的數據,不須要實時入庫, (好比用戶在線 狀態、在線人數..) 門戶網站的新聞等,以爲頁面靜態化仍不能知足要求,能夠放入 到memcache中.(配合jquey的ajax請求)

什麼樣的數據不適合放入memcached中?

小結如何決定是否使用memcached

10、Memcached vs session的比較

1.存放的介質不一樣

2.生命週期方式

3.要解決的問題重點不一樣

相關技術

Redis(Key/value型數據庫),將數據保存在內存中,並定時向硬 盤中同步。

相關文章
相關標籤/搜索