色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

分布式緩存系統(tǒng)Memcached簡(jiǎn)介與實(shí)踐

緣起: 在數(shù)據(jù)驅(qū)動(dòng)的web開發(fā)中,經(jīng)常要重復(fù)從數(shù)據(jù)庫(kù)中取出相同的數(shù)據(jù),這種重復(fù)極大的增加了數(shù)據(jù)庫(kù)負(fù)載。緩存是解決這個(gè)問(wèn)題的好辦法。但是ASP.NET中的雖然已經(jīng)可以實(shí)現(xiàn)對(duì)頁(yè)面局部進(jìn)行緩存,但還是不夠靈活。此時(shí)Memcached或許是你想要的。

Memcached是什么?
Memcached是由Danga Interactive開發(fā)的,高性能的,分布式的內(nèi)存對(duì)象緩存系統(tǒng),用于在動(dòng)態(tài)應(yīng)用中減少數(shù)據(jù)庫(kù)負(fù)載,提升訪問(wèn)速度。

Memcached能緩存什么?
通過(guò)在內(nèi)存里維護(hù)一個(gè)統(tǒng)一的巨大的hash表,Memcached能夠用來(lái)存儲(chǔ)各種格式的數(shù)據(jù),包括圖像、視頻、文件以及數(shù)據(jù)庫(kù)檢索的結(jié)果等。

Memcached快么?

非常快。Memcached使用了libevent(如果可以的話,在linux下使用epoll)來(lái)均衡任何數(shù)量的打開鏈接,使用非阻塞的網(wǎng)絡(luò)I/O,對(duì)內(nèi)部對(duì)象實(shí)現(xiàn)引用計(jì)數(shù)(因此,針對(duì)多樣的客戶端,對(duì)象可以處在多樣的狀態(tài)), 使用自己的頁(yè)塊分配器和哈希表, 因此虛擬內(nèi)存不會(huì)產(chǎn)生碎片并且虛擬內(nèi)存分配的時(shí)間復(fù)雜度可以保證為O(1).。

Danga Interactive為提升Danga Interactive的速度研發(fā)了Memcached。目前,LiveJournal.com每天已經(jīng)在向一百萬(wàn)用戶提供多達(dá)兩千萬(wàn)次的頁(yè)面訪問(wèn)。而這些,是由一個(gè)由web服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器組成的集群完成的。Memcached幾乎完全放棄了任何數(shù)據(jù)都從數(shù)據(jù)庫(kù)讀取的方式,同時(shí),它還縮短了用戶查看頁(yè)面的速度、更好的資源分配方式,以及Memcache失效時(shí)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)速度。

Memcached的特點(diǎn)
Memcached的緩存是一種分布式的,可以讓不同主機(jī)上的多個(gè)用戶同時(shí)訪問(wèn), 因此解決了共享內(nèi)存只能單機(jī)應(yīng)用的局限,更不會(huì)出現(xiàn)使用數(shù)據(jù)庫(kù)做類似事情的時(shí)候,磁盤開銷和阻塞的發(fā)生。

Memcached的使用
Memcached服務(wù)器端的安裝 (此處將其作為系統(tǒng)服務(wù)安裝)
  下載文件:memcached 1.2.1 for Win32 binaries (Dec 23, 2006)
   1 解壓縮文件到c:/memcached
   2 命令行輸入 'c:/memcached/memcached.exe -d install' 
   3 命令行輸入 'c:/memcached/memcached.exe -d start' ,該命令啟動(dòng) Memcached ,默認(rèn)監(jiān)聽端口為 11211
  通過(guò) memcached.exe -h 可以查看其幫助
二   .NET memcached client library
   下載文件:https://sourceforge.NET/projects/memcacheddotNET/

   里面有.NET1.1  和 .NET2.0的兩種版本  還有一個(gè)不錯(cuò)的例子。

三  應(yīng)用

  1 將Commons.dll,ICSharpCode.SharpZipLib.dll,log4NET.dll,Memcached.ClientLibrary.dll 等放到bin目錄
  2 引用
Memcached.ClientLibrary.dll
  3 代碼
 1 namespace Memcached.MemcachedBench
 2 {
 3     using System;
 4     using System.Collections;
 5 
 6     using Memcached.ClientLibrary;
 7 
 8     public class MemcachedBench 
 9     {
10         [STAThread]
11         public static void Main(String[] args) 
12         {
13             string[] serverlist = { "10.0.0.131:11211""10.0.0.132:11211" };
14 
15             //初始化池
16             SockIOPool pool = SockIOPool.GetInstance();
17             pool.SetServers(serverlist);
18 
19             pool.InitConnections = 3;
20             pool.MinConnections = 3;
21             pool.MaxConnections = 5;
22 
23             pool.SocketConnectTimeout = 1000;
24             pool.SocketTimeout = 3000;
25 
26             pool.MaintenanceSleep = 30;
27             pool.Failover = true;
28 
29             pool.Nagle = false;
30             pool.Initialize();
31 
32             // 獲得客戶端實(shí)例
33             MemcachedClient mc = new MemcachedClient();
34             mc.EnableCompression = false;
35 
36             Console.WriteLine("------------測(cè)  試-----------");
37             mc.Set("test""my value");  //存儲(chǔ)數(shù)據(jù)到緩存服務(wù)器,這里將字符串"my value"緩存,key 是"test"
38 
39             if (mc.KeyExists("test"))   //測(cè)試緩存存在key為test的項(xiàng)目
40             {
41                 Console.WriteLine("test is Exists");
42                 Console.WriteLine(mc.Get("test").ToString());  //在緩存中獲取key為test的項(xiàng)目
43             }
44             else
45             {
46                 Console.WriteLine("test not Exists");
47             }
48 
49             Console.ReadLine();
50 
51             mc.Delete("test");  //移除緩存中key為test的項(xiàng)目
52 
53             if (mc.KeyExists("test"))
54             {
55                 Console.WriteLine("test is Exists");
56                 Console.WriteLine(mc.Get("test").ToString());
57             }
58             else
59             {
60                 Console.WriteLine("test not Exists");
61             }
62             Console.ReadLine();
63             
64             SockIOPool.GetInstance().Shutdown();  //關(guān)閉池, 關(guān)閉sockets
65         }
66     }
67 }

NET技術(shù)分布式緩存系統(tǒng)Memcached簡(jiǎn)介與實(shí)踐,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 五寨县| 浙江省| 新营市| 洛扎县| 固镇县| 化德县| 馆陶县| 闸北区| 神木县| 平罗县| 陕西省| 德令哈市| 和静县| 彭水| 安溪县| 福鼎市| 玛纳斯县| 西吉县| 定南县| 隆昌县| 陈巴尔虎旗| 启东市| 九龙县| 福海县| 海门市| 察雅县| 英吉沙县| 灵石县| 丰镇市| 交城县| 讷河市| 徐水县| 拜城县| 浑源县| 岳普湖县| 兰考县| 芦溪县| 时尚| 平原县| 武安市| 孙吴县|