缓存 Memached
https://github.com/enyim/EnyimMemcached
http://www.newasp.net/soft/63735.html#downloaded/
http://blog.csdn.net/zhangyatoua/article/details/50945763
http://download.csdn.net/detail/e_wsq/4358982
https://redislabs.com/lp/memcached-c-sharp/
?
我的代碼
http://git.oschina.net/rocky132/Memached_learn
?
why Memcached ?
高并發訪問數據庫,容易造成死鎖
磁盤io讀寫緩慢
多客戶端可以共享緩存
Net+memory >> io?? //從局域網訪問另一臺機器的內存要比讀寫io要快
讀寫性能完美
超簡單集群搭建Cluster
開源 open source
沒有提供主從賦值功能,也沒有提供容災等功能,所以的代碼基本都是只是考慮性能最佳。不能做數據持久化(redis)。
學習成本非常低,入門非常容易
豐富的成功案例
?
Memcached是由Danga Interactive開發的,高性能的,分布式的內存對象緩存系統,用于在動態應用中減少數據庫負載,提升訪問速度。.net httpruntime.cache不支持跨服務器(不支持分布式)。
訪問量大的網站有必要用到分布式緩存,小網站沒有必要用memcache
Memcached能緩存什么?
通過在內存里維護一個統一的巨大的hash表,Memcached能夠用來存儲各種格式的數據,包括圖像、視頻、文件以及數據庫檢索的結果等。
Memcached的緩存是一種分布式的,可以讓不同主機上的多個用戶同時訪問, 因此解決了共享內存只能單機應用的局限,更不會出現使用數據庫做類似事情的時候,磁盤開銷和阻塞的發生。
資料
原理
memcached分服務器端和客戶端,可以配置多個服務器端和客戶端,應用于分布式的服務非常廣泛。
Memcached是以守護程序(監聽)方式運行于一個或多個服務器中,隨時會接收客戶端的連接和操作。
memcached是一種無阻塞的socket通信方式服務,基于libevent庫,由于無阻塞通信,對內存讀寫速度非常之快。
在 Memcached中可以保存的item數據量是沒有限制的,只要內存足夠 。
Memcached單進程在32位系統中最大使用內存為2G,若在64位系統則沒有限制,這是由于32位系統限制單進程最多可使用2G內存,要使用更多內存,可以分多個端口開啟多個Memcached進程 ,
最大30天的數據過期時間,設置為永久的也會在這個時間過期,常量REALTIME_MAXDELTA
最大鍵長為250字節,大于該長度無法存儲,常量KEY_MAX_LENGTH 250控制
單個item最大數據是1MB,超過1MB數據不予存儲,常量POWER_BLOCK 1048576進行控制,?
它是默認的slab大小
MemCache的工作流程如下:先檢查客戶端的請求數據是否在memcached中,如有,直接把請求數據返回,不再對數據庫進行任何操作;如果請求的數據不在memcached中,就去查數據庫,把從數據庫中獲取的數據返回給客戶端,同時把數據緩存一份到memcached中(memcached客戶端不負責,需要程序明確實現);每次更新數據庫的同時更新memcached中的數據,保證一致性;當分配給memcached內存空間用完之后,會使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效數據首先被替換,然后再替換掉最近未使用的數據,? 閑置 > 過期>最少訪問
Memcache是一個高性能的分布式的內存對象緩存系統,通過在內存里維護一個統一的巨大的hash表,它能夠用來存儲各種格式的數據,包括圖像、視頻、文件以及數據庫檢索的結果等。簡單的說就是將數據調用到內存中,然后從內存中讀取,從而大大提高讀取速度。
內存模型:Memcache預先將可支配的內存空間進行分區(slab),每個分區里再分成多個塊(chunk)大小1MB,但同一個分區里 塊的長度(bytes)是固定的。不存在內存碎片。
?
?
插入數據:查找適合自己長度的塊,然后插入,會有內存浪費
惰性刪除: 它并沒有提供監控數據過期的機制,而是惰性的,當查詢到某個key數據時,如果過期那么直接拋棄。
?
集群搭建原理:
Memcache 服務器端并沒有提供集群功能,但是通過客戶端的驅動程序實現了集群配置。
客戶端實現集群的原理:首先客戶端配置多臺集群機器的ip和端口的列表。然后客戶端驅動程序在寫入之前,首先對key做哈希處理得到哈希值后對總的機器的個數進行取余,然后就選擇余數對應的機器。
?
?
?
安裝memcached 服務
http://www.runoob.com/memcached/window-install-memcached.html c:\memcached\memcached.exe -d install?
啟動、運行 c:\memcached\memcached.exe -d start c:\memcached\memcached.exe -d stop?
卸載 c:\memcached\memcached.exe -d uninstall?
默認端口 11211?
驗證 netstat -ano|findstr "11211"?
連接 telnet 127.0.0.1 11211 檢查memcached當前服務狀態 stats?
?
?
多個web服務器共享緩存
c#操作memcached 代碼
?
轉載于:https://www.cnblogs.com/rockywood/p/6523632.html
總結
以上是生活随笔為你收集整理的缓存 Memached的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: memcache分布式 [一致性hash
- 下一篇: 房子抵押贷款需要些什么条件