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