亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

利用Spring.Net技術打造可切換的分布式緩存讀寫類

2019-11-17 01:56:18
字體:
來源:轉載
供稿:網友

利用SPRing.Net技術打造可切換的分布式緩存讀寫類

  利用Spring.Net技術打造可切換的Memcached分布式緩存讀寫類

  Memcached是一個高性能的分布式內存對象緩存系統,因為工作在內存,讀寫速率比數據庫高的不是一般的多,和Radis一樣具有高效的讀寫和分布式的優勢,上一篇博文《Memcached在Windows下的配置和使用》已經對介紹過它在windows上的配置和使用?! ⌒陆↖CacheWriter類--CacheWriter的接口,以達到通過配置文件可以切換緩存讀寫方式,例如,緩存讀寫也可以通過httpruntime.cache來進行。代碼如下:復制代碼1 public interface ICacheWriter2 {3 void Set(string key, object value, DateTime exp);4 void Set(string key, object value);5 object Get(string key);6 }復制代碼在配置文件中的appSettings節點下添加memcached服務器地址。例如:<add key="memcachedServer" value="127.0.0.1:11211" />新建MemcachedWriter類,代碼如下:復制代碼1 //單例模式2 private static readonly MemcachedClient client;3 static MemcachedWriter()4 { 56 string[] servers = ConfigurationManager.AppSettings["memcachedServer"].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);78 //初始化socket池9 SockIOPool pool = SockIOPool.GetInstance();10 pool.SetServers(servers);11 pool.InitConnections = 1;12 pool.MinConnections = 1;13 pool.MaxConnections = 3;14 pool.SocketConnectTimeout = 1000;//socket連接超時,閑置多少毫秒后銷毀socket15 pool.SocketTimeout = 3000;16 pool.MaintenanceSleep = 30;//維護線程休息時間17 pool.Failover = true;//失效轉移(一種備份操作模式) 18 pool.Nagle = false;//是否用nagle算法啟動socket19 pool.Initialize();//應用設置并初始化socket池2021 //創建memcached客戶端22 client = new MemcachedClient();23 client.EnableCompression = false;//是否進行壓縮2425 }26 public void Set(string key, object value, DateTime exp)27 {28 client.Set(key, value, exp);29 }3031 public void Set(string key, object value)32 {33 client.Set(key, value);34 }3536 public object Get(string key)37 {38 return client.Get(key);39 } 復制代碼這樣就可以通過配置來添加和修改服務器。  有了接口類和實現類,下一步我們就要利用Spring.Net實現它的工廠?! ⌒陆–acheHelper類,代碼如下:復制代碼1    public class CacheHelper2 {3 public static ICacheWriter CacheWriter { get; set; }45 static CacheHelper()6 {7 //如果是靜態的屬性,想讓它有注入的值,就必須先創建一個實例后,才能注入8 //靜態方法調用的時候,不需要Spring容器創建實例,所以屬性CacheWriter沒有注入實例9 //在類的靜態構造函數中強制讓Spring容器為我們創建一個屬性的實例,因為屬性是靜態的,所以只需要創建一次即可1011 IapplicationContext ctx = ContextRegistry.GetContext();12 ctx.GetObject("CacheHelper");1314 }15 public static void WriteCache(string key,object value,DateTime exp)16 {17 CacheWriter.Set(key, value, exp);18 }19 public static void WriteCache(string key, object value)20 {21 CacheWriter.Set(key, value);22 }2324 public static object GetCache(string key)25 {26 return CacheWriter.Get(key);27 }28 }復制代碼public static ICacheWriter CacheWriter { get; set; }這個屬性就是Spring.Net的注入點?! ⌒枰⒁獾氖?,因為Spring.Net只會在類有了第一個實例后才會進行注入,而靜態方法內只能調用靜態字段,靜態方法和靜態字段是在程序開始運行時就已經創建好了,此時CacheHelper還沒有第一個實例,所以靜態字段CacheWriter沒有被注入,需要手動實例化CacheHelper,讓CacheWriter被注入。  在配置文件的Spring節點中添加關于CacheHelper和CacheWriter的配置信息:復制代碼1 <objects xmlns="http://www.springframework.net">2 <!--CacheHelper中的CacheWriter的注入,CacheWriter是單例的-->3 <object name="CacheHelper" type="MyOA_Common.CacheHelper, MyOA_Common" singleton="false">4 <property name="CacheWriter" ref="MemcachedWriter" />5 </object>6 <object name="MemcachedWriter" type="MyOA_Common.MemcachedWriter, MyOA_Common" singleton="true">7 8 </object>9 </objects>復制代碼如果我們想使用httpruntime.cache而不想用Memcached進行緩存讀寫,只需要修改<object name="MemcachedWriter" type="MyOA_Common.MemcachedWriter, MyOA_Common" singleton="true">使用Spring.Net和接口增強了我們程序的靈活性。好了,我們在控制器上測試一下代碼:復制代碼1 public class TestController : Controller2 {3 // GET: /Test/4 public ActionResult Test()5 {6 CacheHelper.CacheWriter.Set("test", "測試成功");7 return View();8 }910 [HttpPost]11 public ActionResult Test(FormCollection form)12 {13 string value = (string)CacheHelper.CacheWriter.Get("test");14 return Content(value);15 }1617 }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲综合一区二区不卡| 欧美老女人性视频| 欧美中文在线字幕| 亚洲人线精品午夜| 中国日韩欧美久久久久久久久| 久久久久久欧美| 国产精品电影久久久久电影网| 亚洲视频在线观看免费| 久久伊人精品一区二区三区| 国产精品欧美激情在线播放| 欧美性极品xxxx娇小| 日韩成人性视频| www.欧美视频| 九九热精品视频在线播放| 午夜剧场成人观在线视频免费观看| 亚洲www在线观看| 91中文在线观看| 欧美高清视频在线观看| 国产精品一区二区三区久久| 久久精品久久精品亚洲人| 国产男女猛烈无遮挡91| 国产成人精品久久亚洲高清不卡| 狠狠操狠狠色综合网| 91精品在线国产| 久久久www成人免费精品| 日本最新高清不卡中文字幕| 日韩精品免费一线在线观看| 综合网日日天干夜夜久久| 国产成人亚洲综合| 亚洲va欧美va国产综合剧情| 日韩a**中文字幕| **欧美日韩vr在线| 亚洲第一天堂无码专区| 91精品久久久久久久久| 亚洲一区二区久久久久久| 国产91精品最新在线播放| 精品国产精品三级精品av网址| 亚洲另类激情图| 国产精品爽爽ⅴa在线观看| 视频一区视频二区国产精品| 国产免费成人av| 亚洲一区二区三区久久| 欧美亚洲另类制服自拍| 免费av在线一区| 亚洲精品电影久久久| 九九久久综合网站| 国产精品一久久香蕉国产线看观看| 中文字幕国产亚洲| 午夜精品久久久久久久久久久久久| 亚洲激情视频在线观看| 92国产精品久久久久首页| 91在线网站视频| 国产精品私拍pans大尺度在线| 68精品久久久久久欧美| 日韩欧美国产黄色| 国产91免费观看| 亚洲网站在线观看| 欧美有码在线观看视频| 亚洲色图校园春色| 亚洲欧美国产精品va在线观看| 日韩成人免费视频| 亚洲视频在线播放| 日韩av在线网站| 亚洲在线视频福利| 亚洲成色777777女色窝| 亚洲精品美女久久| 久久99国产精品自在自在app| 久久久久久久久久国产精品| 中文字幕日韩专区| 欧美极品第一页| 91天堂在线视频| 日韩亚洲欧美中文高清在线| 日韩精品视频在线免费观看| 亚洲在线免费观看| 亚洲毛片在线观看.| 国产香蕉一区二区三区在线视频| 中文字幕日本欧美| 久久手机免费视频| 亚洲九九九在线观看| 欧美成人网在线| www.久久色.com| 亚洲人成网站免费播放| 成人激情春色网| 亚洲福利视频网站| 精品久久久91| 亚洲网址你懂得| 国产乱肥老妇国产一区二| 亚洲天堂免费在线| 欧美激情国产日韩精品一区18| 最新亚洲国产精品| 国产精国产精品| 一本大道亚洲视频| 亚洲第一精品久久忘忧草社区| 91精品在线国产| 亚洲第一福利在线观看| 久久福利视频网| 亚洲成av人乱码色午夜| 亚洲欧洲在线视频| 国产精品综合不卡av| www.欧美三级电影.com| 久久久精品美女| 欧美日韩一区二区三区在线免费观看| 亚洲性生活视频在线观看| 日韩精品极品毛片系列视频| 国产一区二区精品丝袜| 亚洲一区二区三区四区视频| 中文字幕亚洲欧美日韩2019| 欧美性视频网站| 国产欧美一区二区三区久久人妖| 亚洲韩国日本中文字幕| 久久精品最新地址| 国产精品久久久久久久久免费| 久久国产精品久久久久久久久久| 国产精品羞羞答答| 欧美多人乱p欧美4p久久| 日本亚洲精品在线观看| 亚洲欧美日韩区| 精品福利视频导航| 中文字幕精品av| 国产成人精品av| 国产精品精品视频一区二区三区| 日av在线播放中文不卡| 欧美丝袜美女中出在线| 成人亚洲欧美一区二区三区| 欧美午夜视频在线观看| 久久久99免费视频| 欧美激情一级精品国产| 92国产精品久久久久首页| 久久久精品影院| 国产成人精品视频在线观看| 欧美成人午夜激情| 欧美丝袜一区二区| 国产精品国产三级国产专播精品人| 欧美成人免费大片| 国产精品69精品一区二区三区| 国产精品日韩精品| 国产91免费看片| 最近2019中文字幕mv免费看| 欧美日韩亚洲精品一区二区三区| 久久五月天色综合| 欧美一级黑人aaaaaaa做受| 日本精品视频在线播放| 中文字幕日韩视频| 中文精品99久久国产香蕉| 国产精品日韩在线| 久久亚洲综合国产精品99麻豆精品福利| 日韩av123| 国产精品亚洲欧美导航| 欧美激情极品视频| 国产午夜精品全部视频在线播放| 国产精品成人久久久久| 欧美国产一区二区三区| 亚洲欧美色图片| 久久精品久久久久久| 91久久精品日日躁夜夜躁国产| 91亚洲精品久久久久久久久久久久| 亚洲精品成人久久电影| 欧美寡妇偷汉性猛交| 久久这里有精品视频| 亚洲剧情一区二区| 亚洲人在线观看| 亲子乱一区二区三区电影| 国产精品成人va在线观看| 日韩av在线免费播放|