




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
中是有緩存的實(shí)現(xiàn):HttpContext.CacheWeb服務(wù)器的進(jìn)程內(nèi)存里。在控制臺(tái)、WinForm、子線程、SignalR等不支持HttpContext的地方還可以使用HttpContext.Cache對(duì)MemoryCache的封裝。",,:{intage=}就相當(dāng)于一個(gè)Dictionary鍵值對(duì)集合,保存的是鍵值對(duì),然后根據(jù)key取value。高。Memcached程序重啟之后數(shù)據(jù)就會(huì)。windows4、.Net連接Memcached的.Net開發(fā)包:Install-PackageAdd:如果不存在則新增,并且返回true;如果存在則不處理,并且返回false;MemcachedConfigurationmcConfig=newMemcachedConfiguration(); {}3): objectvalue)。當(dāng)然還支持泛型的publicTGet<T>(stringkey)。Key”,比如“Shop_Admin_FilterWords”varcas=.GetWithCas("Name");Console.Wriine("按任意鍵繼續(xù)");varres=.Cas(Enyim.Caching.Memcached.StoreMode.Set,"Name",cas.Result+"1",{}{}
memcached重啟之后短時(shí)間內(nèi)大量的請(qǐng)求會(huì)涌入數(shù)據(jù)庫(kù),給數(shù)據(jù)庫(kù)造成壓力,解決這個(gè)的方法就是使用集群,有多臺(tái)Memcached服務(wù)器提供服務(wù)。Memcached服務(wù)器的“雪崩”問題:如果所有緩存設(shè)置過期時(shí)間一樣,那么每隔一段 Memcached的集群實(shí)現(xiàn)很簡(jiǎn)單,集群節(jié)點(diǎn)直接不進(jìn)行通訊、同步,只要在多個(gè)服務(wù)器上啟動(dòng)多個(gè)Memcached服務(wù)器即可,客戶端決定把數(shù)據(jù)寫入不同的實(shí)例,不搞主從,mcConfig.AddServer(":11211");ip地址,然后客戶端根據(jù)Memcached實(shí)例,取數(shù)據(jù)庫(kù)的時(shí)候再根據(jù)同樣的定位算法接根據(jù)hash值算出服務(wù)地址,而是一個(gè)VBucket表,在表中指定不同的hash值由不同的服務(wù)器處理,還可以臨時(shí)改變指向。建議用Ketama就可以了。節(jié)點(diǎn)定位算自動(dòng)處理故障服務(wù)器。mcConfig.NodeLocatorFactory=newKetamaNodeLocatorFactory()。緩存要求都Redis是一個(gè)支持?jǐn)?shù)據(jù)結(jié)構(gòu)的鍵值對(duì)數(shù)據(jù)庫(kù)。它的值不僅可以是字符串等基本數(shù)據(jù)類型,也可以是類對(duì)象,更可以是Set、List、計(jì)數(shù)器等高級(jí)的數(shù)據(jù)結(jié)構(gòu)。MemcachedList全部元素取出來(lái),然后再把元素增加進(jìn)去,然后再保存回去,不僅效率低,而且有并發(fā)問題。Redis內(nèi)置的Set、List等可以直接支持增加、刪除元素的Memcached數(shù)據(jù)存在內(nèi)存中,memcached重啟后數(shù)據(jù)就;而Redis會(huì)把數(shù)據(jù)持久化到硬盤中,Redis重啟后數(shù)據(jù)還存在。redisforwindows>=2.8的版本支持直接安裝為windows如果msi自動(dòng)裝完服務(wù),如果zip需要按照下面的方法安裝為服務(wù)a的性能。可以在一臺(tái)服務(wù)器上運(yùn)行多個(gè)Redis實(shí)例,不同實(shí)例不同端口,再互沒有Memcached好,還可以業(yè)務(wù)數(shù)據(jù)。直接啟動(dòng)redis安裝 下的redis-cli即可。不用管的自動(dòng)提示。執(zhí)行setnameyzk,就是設(shè)置鍵值對(duì)name=yzk時(shí)候也要選擇好Key。Redis16個(gè)數(shù)據(jù)庫(kù),Redis的想法是讓大家把不同系統(tǒng)的數(shù)據(jù)放到不同例的話效率就不高,建議放到不同的實(shí)例中。因此盡量只用默認(rèn)的db0數(shù)據(jù)庫(kù)。了解的常用的幾個(gè)命令就可以。所有對(duì)數(shù)據(jù)的操作都可以通過命令行進(jìn)行,后面講的tds{IDatabasedb=redis.GetDatabase();//默認(rèn)是db0數(shù)據(jù)庫(kù),可以通過方法參數(shù)指定數(shù)} ",=KeyRedisKeyValueKey操作針對(duì)所有數(shù)據(jù)類型,因?yàn)闀?huì)有并發(fā)問題;KeyExpire(RedisKeykey,TimeSpan?expiry)、KeyExpire(RedisKeykeyDateTime?法不能混用,比如不能用ListXXX寫入的值用StringXXX去或者寫入等操作。StringAppend(RedisKeykey,RedisValuevalue)KeyValue中附加內(nèi)容,不存在則新建;);0開始加;db.StringDecrement("count",1)StringGet()獲取字符串類型的值。比如可以用這個(gè)來(lái)計(jì)算點(diǎn)擊量、點(diǎn)贊量,效率非常高。privatestaticstringXinWen_Prefix="WWW_XinWen_";publicasyncTask<ActionResult>Index(intid){{IDatabasedb=redis.GetDatabase();//默認(rèn)是db0數(shù)據(jù)庫(kù),可以通過方法參數(shù)指定數(shù)字訪{}RedisValueclickCount=awaitdb.StringGetAsync(XinWen_Prefix+"XWClickCount"+id);XinWenModelmodel=newXinWenModel();returnView(model);}return}可以當(dāng)成雙向隊(duì)列或者雙向棧用,list長(zhǎng)度是無(wú)限。ListLeftPush(RedisKeykeyRedisValuevalue)從左側(cè)壓棧;RedisValueListLeftPop(RedisKeyListRightPush(RedisKeykey,RedisValuevalue)從右側(cè)壓棧;RedisValueListRightPop(RedisKeykey)從右側(cè)彈出;RedisValueListGetByIndex(RedisKeykey,longindex)獲取Key為key的List中第index個(gè)元素的值;longListLength(RedisKeykey)KeykeyListListGetByIndex、ListLength因?yàn)闀?huì)有并發(fā)問題;。stop=-1)。不傳start、end表示獲取所有數(shù)據(jù)。指定之后則獲取某個(gè)范圍。可以把Redis的list當(dāng)成消息隊(duì)列使用,比如向用戶發(fā)送歡迎郵件的工作,可以在的流程中把要發(fā)送郵件的郵箱放到list中,另一個(gè)程序從listpop獲取郵件來(lái)發(fā)送。longSetLength(RedisKeykey)獲得set中元素的個(gè)數(shù);SetRemove(RedisKeykeyRedisValuevalue)set中刪除元素;RedisValue[]SetMembers(RedisKeykey)獲取集合中的元素;如果對(duì)于數(shù)據(jù)遍歷順序有要求,可以使用sortedset,他會(huì)按照打分來(lái)進(jìn)行遍歷。SortedSetAdd(RedisKeykey,RedisValuemember,doublescore)keysortedset中增加doubleSortedSetIncrement(RedisKeykeyRedisValuemember,doublevalue)給key中member這一項(xiàng)增加value分;doubleSortedSetDecrement(RedisKeykeyRedisValuemember,doublevalue)keymember這一項(xiàng)減value分;SortedSetEntry[]SortedSetRangeByRankWithScores(RedisKeykey,longstart=0,longstop=-1,OrderorderOrder.Ascendingsortedset中的元素以及元素的打分,start、stop用來(lái)分頁(yè)查詢、order用來(lái)指定排序規(guī)則。foreach(variteminitems){}RedisValue[]SortedSetRangeByRank(RedisKeykey,longstart=0,longstop=-1,Orderorder)RedisValue[]SortedSetRangeByScore(RedisKeykey,doublestart=double.NegativeInfinity,doublestop=double.PositiveInfinity,Excludeexclude=Exclude.None,Orderorder=Order.Ascending,longskipGeo是Redis3.2版本后新增的數(shù)據(jù)類型,用來(lái)保存點(diǎn)(POI,pointofinterest)的坐標(biāo)信息。可以實(shí)現(xiàn)計(jì)算兩POI之間的距離、獲取一個(gè)點(diǎn)周邊指定距離的POI。 db.GeoAdd("ShopsGeo",newGeoEntry(116.34039,39.94218,"1"));,米范圍內(nèi)的POI{ }GeoRadiusResult[]resultsdb.GeoRadius("ShopsGeo",116.34092,39.94223,200,GeoUnit.Meters);//獲取(116.34092,39.94223)這個(gè)周邊200米范圍內(nèi)的POI{}GeoHash原理 幾乎所有的操作都支持?jǐn)?shù)組類型,這樣就可以操作多條數(shù)據(jù):比如IBatchbatch=20、redis多線的lock等的作用范圍是當(dāng)前的程序范圍內(nèi)的,如果想跨多臺(tái)服務(wù)器的鎖(盡用最多10秒鐘,超過10秒鐘如果還沒有LockRelease,則也自動(dòng)釋放鎖,避免了死鎖{{}
{}}{ }MN個(gè)人(考慮最后一個(gè)除不盡的問題,分完N個(gè)的和,如果多出來(lái)一些錢隨機(jī)發(fā)給一個(gè)人N次:生成i1、i2,i1m1,生成介于[0,m1/2)m2,此為了避免精度損失,真實(shí)運(yùn)算的時(shí)候都是按照分為單位,只有int,沒有n=10;//發(fā)給幾個(gè)人int[]bags=newint[n];//n個(gè)紅包intavgmn;//算平均值for(inti=0;i<n;i++){}Randomrand=newintleftMmavg*n;//平均分配后可能會(huì)剩幾分錢,隨機(jī)發(fā)給一個(gè)人bags[rand.Next(0,n)]+=leftM;{inti2=rand.Next(0,}{} /到download的地方,【CommunityServer】,里面有系統(tǒng)下的安裝方法。那么“WindowsServer200864-bit,withoutSSLsupportx64”就行,是支持Win7以上64mongodb默認(rèn)使用C:\data\db作為數(shù)據(jù)文件夾,需要先創(chuàng)建這個(gè)文件夾啟動(dòng)出錯(cuò)一閃而過,那么cmd去執(zhí)行,就能看到報(bào)錯(cuò)信息。MongoDB安裝成windowsnetstart Ubuntu安裝方法 3MongoDBGUI供因?yàn)楣倬W(wǎng)的地址 供4.Net =newMongo("mongodb://localhost");IMongoDatabasedatabase= >collection=database.GetCollection< p1=new();p1.Id=1;p1.Age=5;(回到客戶端工具刷新一下,就能看到新插入的數(shù)據(jù),MongoDB會(huì)自動(dòng)創(chuàng)建“數(shù)據(jù)庫(kù)”class{publicintId{get;set;publicstringName{get;set;}publicintAge{get;set;}}Dogd1=newDog();d1.Age=33;d1.Name="jacky"; 來(lái)IMongoCollection<Bson>dogs=database.GetCollection<Bson>("Dogs");stringjson="{id:8889,Age:81,Name:'japan',gender:true}";varfilter1=Builders< {while({vars=sCursor.Current;foreach(varpins){}}}為什么FindAsync不直接返回集合,MoveNext之后返回一個(gè)集合呢?因?yàn)榉祷氐臄?shù)據(jù)量可能很大,因此MongoDB是分批,一批之后執(zhí)行GET_More操作返回下一批。可以通過FindOptions參數(shù)的BatchSize設(shè)置每一批的大小。如果確認(rèn)返回的數(shù)據(jù)量不大,可以varps= sCursor.ToListAsync()(或需要注意MongoDB中查詢區(qū)分大小寫。 當(dāng)然最常用的還是Where操作:varfilter1=Builders< >.Filter.Where(p=>p.Age>=5&&p.Name=="rupeng");using(var sCursor=awaitcollection.FindAsync(filter1)){foreac
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 山西老區(qū)職業(yè)技術(shù)學(xué)院《流行歌曲演唱》2023-2024學(xué)年第一學(xué)期期末試卷
- 中國(guó)海洋大學(xué)《微體古生物學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東師范大學(xué)《建筑材料實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇食品藥品職業(yè)技術(shù)學(xué)院《微波遙感基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 綏化學(xué)院《中國(guó)古代文學(xué)B》2023-2024學(xué)年第一學(xué)期期末試卷
- 電子競(jìng)技賽事運(yùn)營(yíng)合同
- 建筑工程勞務(wù)居間合同
- 屋面彩瓦工程承包合同
- 微商代理銷售合同
- 對(duì)賭協(xié)議合同合同書
- 加油站施工施工組織設(shè)計(jì)方案
- 應(yīng)急停水停電培訓(xùn)資料
- 傳染病防治知識(shí)和技能培訓(xùn)計(jì)劃
- 【MOOC】書法鑒賞-浙江傳媒學(xué)院 中國(guó)大學(xué)慕課MOOC答案
- 足球場(chǎng)運(yùn)動(dòng)草坪全年養(yǎng)護(hù)計(jì)劃
- 水利工程資料員培訓(xùn)課件
- 《幼兒教育政策與法規(guī)》課件-單元4 幼兒園的保育和教育
- 《史記》《漢書》第九-整本書閱讀《經(jīng)典常談》名著閱讀與練習(xí)
- 環(huán)衛(wèi)設(shè)施設(shè)備更新實(shí)施方案
- 機(jī)械制造技術(shù)基礎(chǔ)(課程課件完整版)
- 江西省南昌市高三二模考試地理試題
評(píng)論
0/150
提交評(píng)論