日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET使用Memcached高缓存实例(初级教程)

發(fā)布時(shí)間:2023/12/10 asp.net 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET使用Memcached高缓存实例(初级教程) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
http://www.itruanjian.com/a/itruanjian/datebase/nosql/2011/0927/5706.htmlMemcached是一個(gè)高性能的分布式內(nèi)存對(duì)象緩存系統(tǒng),用于動(dòng)態(tài)Web應(yīng)用以減輕數(shù)據(jù)庫負(fù)載。它通過在內(nèi)存中緩存數(shù)據(jù)和對(duì)象來減少讀取數(shù)據(jù)庫的次數(shù),從而提供動(dòng)態(tài)、數(shù)據(jù)庫驅(qū)動(dòng)網(wǎng)站的

?????Memcached?是一個(gè)高性能的分布式內(nèi)存對(duì)象緩存系統(tǒng),用于動(dòng)態(tài)Web應(yīng)用以減輕數(shù)據(jù)庫負(fù)載。它通過在內(nèi)存中緩存數(shù)據(jù)和對(duì)象來減少讀取數(shù)據(jù)庫的次數(shù),從而提供動(dòng)態(tài)、數(shù)據(jù)庫驅(qū)動(dòng)網(wǎng)站的速度。Memcached作為緩存技術(shù)的解決方案,已經(jīng)是眾所周知了;現(xiàn)在很多WEB應(yīng)用都在使用它――包括一些知名的網(wǎng)站。若你還不知道這些,請(qǐng)?jiān)陂喿x之前先了解一下。
??????? 在ASP.NET中使用Memcached,有很多文章都有介紹,以下是我個(gè)人的使用經(jīng)驗(yàn)。
??????? 一,準(zhǔn)備
??????? 你需要有一下軟件:
?????? VS.NET(05/08)
?????? SQLSERVER
?????? memcached服務(wù)器端以及客戶端類庫(開源軟件,下載即可)
其中,客戶端類庫包括以下幾個(gè)DLL:
?????? Memcached.ClientLibrary.dll
?????? ICSharpCode.SharpZipLib.dll
?????? log4net.dll
?????? 二,安裝memcached服務(wù)器端
?????? 將memcached.exe復(fù)制到任意目錄下,如 c:,在命令行輸入:
memcached.exe -d install
memcached將作為一個(gè)服務(wù)常駐系統(tǒng)內(nèi)存了
????? 三,建立ASP.NET工程
???? 創(chuàng)建一個(gè)ASP.NETWEB項(xiàng)目,命名為MMCWEB,添加以上提到的幾個(gè)客戶端類庫的引用。
???? 四,配置
???? memcached使用了log4net,所以我們先配置log4net
在web.config里找到configSections節(jié)點(diǎn),添加以下內(nèi)容
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />

再在configSections節(jié)點(diǎn)之外,增加以下內(nèi)容:
<log4net>
??????? <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
??????????? <param name="File" value="LogFiles/"/>
??????????? <param name="AppendToFile" value="true"/>
??????????? <param name="MaxSizeRollBackups" value="10"/>
??????????? <param name="StaticLogFileName" value="false"/>
??????????? <param name="DatePattern" value="yyyy-MM-dd&quot;.txt&quot;"/>
??????????? <param name="RollingStyle" value="Date"/>
??????????? <layout type="log4net.Layout.PatternLayout">
??????????????? <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger %ndc - %message%newline"/>
??????????? </layout>
??????? </appender>
??????? <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
??????????? <layout type="log4net.Layout.PatternLayout">
??????????????? <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger %ndc - %message%newline" />
??????????? </layout>
??????? </appender>
??????? <root>
??????????? <level value="ALL" />
??????????? <appender-ref ref="RollingLogFileAppender" />
??????????? <appender-ref ref="ConsoleAppender" />
??????? </root>
??????? <logger name="Memcached.ClientLibrary">
??????????? <level value="WARN" />

??????? </logger>
??? </log4net>
啟動(dòng)調(diào)試,若沒出現(xiàn)配置的出錯(cuò)提示,并且在網(wǎng)站目錄下有文件夾LogFiles,就說明log4net配置成功了。

五,初始化SockIOPool
SockIOPool是什么東東?SockIOPool是Memcached客戶端提供的一個(gè)套接字連接池,通俗講,就是與Memcached服務(wù)器端交換數(shù)據(jù)的對(duì)象。SockIOPool在應(yīng)用程序啟動(dòng)時(shí)初始化一次就可以了,我把這個(gè)工作放在 GLOBAL.ASAX.CS的Application_Start方法里
char[] separator = { ',' };
??????????? string[] serverlist = ConfigurationManager.AppSettings["Memcached.ServerList"].Split(separator);

??????????? // initialize the pool for memcache servers
??????????? try
??????????? {
??????????????? SockIOPool pool = SockIOPool.GetInstance();
??????????????? pool.SetServers(serverlist);

??????????????? pool.InitConnections = 3;
??????????????? pool.MinConnections = 3;
??????????????? pool.MaxConnections = 50;

??????????????? pool.SocketConnectTimeout = 1000;
??????????????? pool.SocketTimeout = 3000;

??????????????? pool.MaintenanceSleep = 30;
??????????????? pool.Failover = true;

??????????????? pool.Nagle = false;
??????????????? pool.Initialize();
??????????? }
??????????? catch (Exception err)
??????????? {
??????????????? //這里就可以用Log4Net記錄Error啦!
??????????? }

注意AppSettings["Memcached.ServerList"]是在WEB.CONFIG里設(shè)置的,所以WEB.CONFIG的appSettings的子節(jié)點(diǎn)里需要有以下一行
<add key="Memcached.ServerList" value="127.0.0.1:11211"/>
啟動(dòng)調(diào)試服務(wù)器,若沒有出錯(cuò)的日志記錄,說明IO連接池已經(jīng)開辟成功。
??????? 六,使用Memcached
?????? 終于進(jìn)入正題了,不過使用之前,我們還需要準(zhǔn)備一些數(shù)據(jù)。
????? 創(chuàng)建一個(gè)實(shí)體類People,并加上Serializable屬性!!!
????? 對(duì)應(yīng)的數(shù)據(jù)庫里,增加一張表,字段對(duì)應(yīng)實(shí)體類,插入一些測(cè)試數(shù)據(jù)。持久層和業(yè)務(wù)層的設(shè)計(jì)就略過了,他們負(fù)責(zé)向提供一些數(shù)據(jù),返回類型可自定,若ILIST,DATASET。
???? Memcached使用起來就很簡(jiǎn)單了,比如后臺(tái)檢索出一組People類型的數(shù)據(jù),放在一個(gè)叫peopleList的arraylist里,而且這個(gè)arraylist要頻繁使用,只需要這樣
MemcachedClient mc = new MemcachedClient();
mc.EnableCompression = true;
mc.Set(key, peopleList);?????
???????? 上面的key是用來訪問這個(gè)arraylist的鍵,Memcached里的數(shù)據(jù)都是保存為鍵-值對(duì)的。
一旦mc.KeyExists(key)為TRUE,就用return mc.Get(key) as ArrayList提取數(shù)據(jù),刪除時(shí),使用 return mc.Delete(key);等等。可以自己琢磨了。

???????? 以上只是演示,其實(shí)數(shù)據(jù)緩存是一項(xiàng)復(fù)雜而繁瑣的工作,不僅需要后臺(tái)代碼的分層優(yōu)化,也需要數(shù)據(jù)庫對(duì)大數(shù)據(jù)量訪問的策略和調(diào)優(yōu)。

文章來自學(xué)IT網(wǎng):http://www.xueit.com/html/2009-05/21_2027_00.html

(責(zé)任編輯:admin)

?

轉(zhuǎn)載于:https://www.cnblogs.com/swjm119/archive/2012/02/04/2337880.html

總結(jié)

以上是生活随笔為你收集整理的ASP.NET使用Memcached高缓存实例(初级教程)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。