非 常快。memcached使用了libevent(如果可以的話,在linux下使用epoll)來均衡任何數量的開啟鏈結,使用非阻塞的網路i/o,對 內部物件實現引用計數(因此,針對多樣的客戶端,物件可以處在多樣的狀態), 使用自己的頁塊分配器和雜湊表, 因此虛擬記憶體不會產生碎片並且虛擬記憶體分配的時間複雜度可以保證為o(1).。
danga interactive為提公升danga interactive的速度研發了memcached。目前,livejournal.com每天已經在向一百萬使用者提供多達兩千萬次的頁面訪問。而這 些,是由乙個由web伺服器和資料庫伺服器組成的集群完成的。memcached幾乎完全放棄了任何資料都從資料庫讀取的方式,同時,它還縮短了使用者檢視 頁面的速度、更好的資源分配方式,以及memcache失效時對資料庫的訪問速度。
memcached的特點
裡面有.net1.1 和 .net2.0的兩種版本 還有乙個不錯的例子。
三 應用
1 將commons.dll,icsharpcode.sharpziplib.dll,log4net.dll,memcached.clientlibrary.dll 等放到bin目錄
2 引用
後記: 是個不錯的東西 ,使用起來也很方便,php ,ruby 的專案中用這個的很多,但是.net專案中用的較少(恕俺孤陋寡聞) 。希望有興趣的朋友們 多多交流 。 看到頁首了麼各位兄弟? 不用我多說了吧,
1namespace
memcached.memcachedbench2;
1415
//初始化池
16sockiopool pool
=sockiopool.getinstance();
17pool.setservers(serverlist);
1819
pool.initconnections =3
;20pool.minconnections =3
;21pool.maxconnections =5
;2223pool.socketconnecttimeout
=1000;24
pool.sockettimeout
=3000;25
26pool.maintenancesleep =30
;27pool.failover
=true;28
29pool.nagle
=false;30
pool.initialize();
3132
//獲得客戶端例項
33memcachedclient mc
=new
memcachedclient();
34mc.enablecompression
=false;35
36console.writeline(
"------------測 試-----------");
37mc.set(
"test",
"my value
");
//儲存資料到快取伺服器,這裡將字串"my value"快取,key 是"test"
3839
if(mc.keyexists(
"test
"))
//測試快取存在key為test的專案
4044
else
4548
49console.readline();
5051
mc.delete(
"test
");
//移除快取中key為test的專案
5253
if(mc.keyexists(
"test"))
5458
else
5962
console.readline();
6364
sockiopool.getinstance().shutdown();
//關閉池, 關閉sockets65}
66}67}
分布式快取
分布式快取 原則來說跟應用伺服器分布式應該是一樣,但快取是有狀態的。怎麼樣提高命中?1.最原始的演算法 那就是key hash取模,取到伺服器ip。在大量伺服器伸縮行有問題,加入一台伺服器就有可能讓所有的快取都失效。如 key hash 後是100,取10膜是0,取11膜 1,101 取10膜是1,...
分布式快取
網際網路發展的同時,也引領者相關技術的發展與變革,比如集群 高併發 負載均衡 高可用 海量資料的處理 系統安全 分布式快取等各方面的相關技術。簡單談一下分布式快取技術。2 三層架構 1 web層 表現層 主要對使用者資料接收,以及資料處理完成後返回,為客戶端提 用程式的訪問 2 應用層 對業務的處理...
分布式快取
分布式快取 1 什麼是分布式快取?在高併發的環境下,大量的i o處理與cpu的處理速度顯然不在同乙個數量級,從減輕資料庫的壓力和提高系統的響應速度兩個角度來考慮,因而都會在資料庫之前加一層快取。由於單機的記憶體資源和承載能力有限,因而可以採用多台伺服器來用作快取,使得多台快取伺服器形同一台,並且不會...