Memcached在.net的應用

黄舟
發布: 2017-03-13 13:18:22
原創
1341 人瀏覽過

一,服務端的安裝與設定

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

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

3)        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中的應用的內容,更多相關內容請關注PHP中文網(www.php.cn)!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!