|
這篇來講如何利用memcached實現(xiàn)一級緩存,以及如何讓一級緩存組件支持在企業(yè)庫,memcached或者其它第三方實施方案之間的切換。memcached本人并沒有太多經(jīng)驗,如果文中有說的不對的地方,還希望批評指出,且文中關(guān)于memcached的代碼大多來自網(wǎng)絡(luò)。
創(chuàng)建memcached實現(xiàn)類MemcachedWebCacheProvider,由它來繼承緩存提供者接口IWebCacheProvider,主里memcached客戶端我采用.NET memcached client library ,這個類庫很久沒有更新這過了,沒有和Java版同步,有部分功能目前沒有實現(xiàn)。
1:初始化memcached服務(wù),這段初始化代碼在程序中保證執(zhí)行一次就夠,一般可以放在gloabl文件中,或者是設(shè)置一個靜態(tài)變量來存儲服務(wù)的狀態(tài)。
{
String[] serverlist = { "127.0.0.1:11211" };
this._pool = SockIOPool.GetInstance("default");
this._pool.SetServers(serverlist); //設(shè)置服務(wù)器列
//各服務(wù)器之間負載均衡的設(shè)置
this._pool.SetWeights(new int[] { 1 });
//socket pool設(shè)置
this._pool.InitConnections = 5; //初始化時創(chuàng)建的連接數(shù)
this._pool.MinConnections = 5; //最小連接數(shù)
this._pool.MaxConnections = 250; //最大連接數(shù)
//連接的最大空閑時間,下面設(shè)置為6個小時(單位ms),超過這個設(shè)置時間,連接會被釋放掉
this._pool.MaxIdle = 1000 * 60 * 60 * 6;
//通訊的超時時間,下面設(shè)置為3秒(單位ms),.NET版本沒有實現(xiàn)
this._pool.SocketTimeout = 1000 * 3;
//socket連接的超時時間,下面設(shè)置表示連接不超時,即一直保持連接狀態(tài)
this._pool.SocketConnectTimeout = 0;
this._pool.Nagle = false; //是否對TCP/IP通訊使用Nalgle算法,.NET版本沒有實現(xiàn)
//維護線程的間隔激活時間,下面設(shè)置為60秒(單位s),設(shè)置為0表示不啟用維護線程
this._pool.MaintenanceSleep = 60;
//socket單次任務(wù)的最大時間,超過這個時間socket會被強行中斷掉(當(dāng)前任務(wù)失?。?/span>
this._pool.MaxBusy = 1000 * 10;
this._pool.Initialize();
}
it知識庫:網(wǎng)站架構(gòu)之緩存應(yīng)用,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。