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