Memcached在.net中的應用

來源:互聯網
上載者:User

一,服務端的安裝及配置

1) 解壓縮檔案到c:\memcached(也可以選擇任意位置)

2) 命令列輸入 'c:\memcached\memcached.exe -d install'

3) 命令列輸入 'c:\memcached\memcached.exe -d start' ,該命令啟動 Memcached ,預設監聽連接埠為 11211

4) 通過 memcached.exe -h 可以查看其協助

二,用戶端的安裝及引用



對於用戶端操作服務端,我們有多種可選方式,在這裡,我們選擇使用dll.因為dll的方式產生較快,而且避免了繁瑣的設定檔中的設定,比較方便。對於telnet命令等等,我們可以在服務端使用來檢查資料,查看cache的命中率等。

1.關於Dll的引用

下載完Dll之後,在項目中添加引用

2,可能出現問題

我在引入log4net跟Memcached.ClientLibray的時候,出現引入了,類檔案裡面也加入了using,但是以產生就報錯,後來發現是.net framework版本的問題,將版本從版本改為.net framework 4之後產生就ok了。

三,Memcached機制深入瞭解

1,基於C/S架構,協議簡單

1) C/S架構,此時memcached為服務端,我們可以使用各種用戶端程式串連memcached伺服器。

2) Memcached的伺服器用戶端通訊不使用XML等格式,而使用簡單的基於文本行的協議,因此,通過telnet也能在memcached上儲存資料,取得資料。

2,基於libevent的事件處理

1) Libevent是一套跨平台的事件處理介面的封裝,能夠相容包括這些作業系統:Windows/Linux/BSD/Solaris等作業系統的事件處理。

2) Memcached使用libevent來進行網路並發串連的處理,能夠保持在很大的並發情況下,仍舊能夠保持快速響應的能力。

3,內建記憶體儲存方式

為了提高效能,memcached中儲存的資料都儲存在memcahced內建的記憶體儲存空間中。由於資料僅存在於記憶體中,因此重啟memcached,重啟作業系統會導致全部資料消失。另外,內容容量達到指定值之後,就基於LRU(Least Recently Used)演算法自動刪除不使用的緩衝。Memcached本身是為緩衝而設計的伺服器,隱藏並沒有過多考慮資料的永久性問題。

4,基於用戶端的分布式

Memcached儘管是“分布式”快取服務器,但服務端並沒有分布式功能更。各個memcached不會相互連信以共用資訊。那麼,怎樣進行分布式,這完全取決於用戶端的實現,有興趣的可以百度下hash演算法。




代碼體會:


四,memcached與session

1) 生命週期不同

2) 要解決的問題重點不同

五,memcached與Cache

cache作為。Net中狀態管理的東東,感覺也相當強大:1,緩衝依賴:可以依賴或檔案,資料庫,組合的依賴,並且提供了資料到期的通知機制,方便在我們在到期的時候及時更新資料。2,通知機制的使用:以前比較早的時候,對於資料過不到期,使用的還是輪詢機制,類似迴圈查看資料有沒有被更新,如果被更新了,則此時更新cache。但是總感覺輪詢機制很怪怪的,比如,我在家燒一壺水,不應該是我總去看水開沒開,而是要水開瞭然後有個啥聲音告訴我水開了。通知機制就是這個意思,至於通知機制的原理,可以去查一下observer模式,在23中設計模式中,這個用的還是蠻多的。

當初使用memcached的時候,由於cache的原因,就自然想到了這個通知機制,查了一下,貌似memcached是沒有這個的,要想自己做一個到期更新,也只能使用輪詢機制。但是從memcached的使用情境去思考,我們會發現其實有到期時間就足夠了。

六,memcached的適用情境

1) 變化頻繁,具有不穩定性的資料,不需要即時入庫(比如使用者線上狀態,線上人數)

2) 門戶網站的新聞的等,覺得頁面靜態化仍不能滿足要求,可以放入到memcached中(配合jquery的ajax請求)

……

七,memcached的安全性問題

由於memcached沒有內建身分識別驗證機制,造成了使用telnet訪問ip+連接埠就可以登入的情況,然后里面的資料就成了待宰的羔羊。為了避免防止被黑掉,我們可以在memcached伺服器上對外關閉掉訪問連接埠,只允許本機程式訪問。

八,相似技術的比較

1,Redis

1) 支援更多value類型

2) 可持久化:redis會周期性的把更新的資料寫入磁碟或者把修改操作寫入追加的記錄檔案,並且在此基礎上實現了master-slave(主從)同步

3) 支援主從同步:資料可以從主伺服器向任意數量的從伺服器上同步,從伺服器可以是關聯其他從伺服器的主伺服器。這使得Redis可執行單層樹複製。存檔可以有意無意的對資料進行寫操作。由於完全實現了發布/訂閱機制,使得從資料庫在任何地方同步樹時,可訂閱一個頻道並接收主伺服器完整的訊息發布記錄。同步對讀取操作的可擴充性和資料冗餘很有協助。

2,EhCache

1) 純Java的進程內緩衝架構,具有快速、精乾等特點,是Hibernate中預設的CacheProvider。

2) 開源Java分布式緩衝: 主要面向通用緩衝,Java EE和輕量級容器。它具有記憶體和磁碟儲存,緩衝載入器,緩衝擴充,緩衝例外處理常式,一個gzip緩衝servlet過濾器,支援REST和SOAP api等特點。

。。。。。。。。。

以上就是Memcached在.net中的應用的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.