全新java高級(jí)架構(gòu)師項(xiàng)目實(shí)戰(zhàn)智能運(yùn)營(yíng)助手-redis基礎(chǔ)_第1頁(yè)
全新java高級(jí)架構(gòu)師項(xiàng)目實(shí)戰(zhàn)智能運(yùn)營(yíng)助手-redis基礎(chǔ)_第2頁(yè)
全新java高級(jí)架構(gòu)師項(xiàng)目實(shí)戰(zhàn)智能運(yùn)營(yíng)助手-redis基礎(chǔ)_第3頁(yè)
全新java高級(jí)架構(gòu)師項(xiàng)目實(shí)戰(zhàn)智能運(yùn)營(yíng)助手-redis基礎(chǔ)_第4頁(yè)
全新java高級(jí)架構(gòu)師項(xiàng)目實(shí)戰(zhàn)智能運(yùn)營(yíng)助手-redis基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Redis實(shí)Java緩存機(jī)javastaticHashMap存緩存一個(gè)p就可以搞定對(duì)象的緩存最簡(jiǎn)單也最不實(shí)用首要的問(wèn)題就是保SoftRefernceWekReferencePhantomRference(batisJDKPhantoReference這玩意兒,得惡補(bǔ)基礎(chǔ)啊這三種都是弱,區(qū)別在于強(qiáng)度不同,至于弱概念個(gè)人理解就是對(duì)象的生命周期與JVM掛鉤,VMOutOfMeorrror異常。OsCacheEhCache區(qū)ehcache主要是對(duì)數(shù)據(jù)庫(kù)的緩存,相同的查詢語(yǔ)句只需查詢一次數(shù)據(jù)庫(kù),從而提高了查詢的速度,使用spring的AOP可以很容易實(shí)現(xiàn)這能。NoSQL介NoSQLNotOnlySQL的縮寫(xiě),意即"SQL"的意思,泛指非關(guān)系型的數(shù)據(jù)庫(kù)。強(qiáng)調(diào)Key-ValueStores和文檔數(shù)據(jù)庫(kù)的優(yōu)點(diǎn),而不是單純的RDBMS。NoSQL產(chǎn)品Redis、mongodbMembase、RedisMembase區(qū)Redis支持?jǐn)?shù)據(jù)的持久化,可以將數(shù)據(jù)存放在硬盤(pán)上Memcache不支持?jǐn)?shù)據(jù)的之久Redissetliset等類Memcache支持簡(jiǎn)單數(shù)據(jù)類型,需要客戶端自己處理對(duì)Redis簡(jiǎn)RedisBSDkey-valueRediskeyvalueRedis不僅僅支持簡(jiǎn)單的key-value類型的數(shù)據(jù),同時(shí)還提供等數(shù)據(jù)結(jié)構(gòu)的Redis支持?jǐn)?shù)據(jù)的備份,即master-slave模式的數(shù)據(jù)備份Redis應(yīng)用場(chǎng)主要能夠體現(xiàn)解決數(shù)據(jù)庫(kù)的壓力例如:時(shí)間有效期、session共享解決方Redis優(yōu)Redis110000次/s,81000次/sRedisStrings,Lists,HashesSetsOrderedSets數(shù)據(jù)類型操作RedisRedis還支持對(duì)幾個(gè)操作全并后的原子Redispublish/subscribe,通知keyRedis與其他key-value有什么不同Redis可以做很多內(nèi)部復(fù)雜要進(jìn)行隨機(jī)。Redis安windows安裝新建start.bat批處理文件、內(nèi)容:redis- start.bat修改#requirepass 修改為requirepass注意:修改的時(shí)候前面不要加空l(shuí)inuxRedis的是:(這里的是Linux版Redis源碼包Redis服務(wù)器端的默認(rèn)端口是6379在windows系統(tǒng)中好Redis的源碼包。通過(guò)WinSCP工具將Redis的源碼windows上傳到Linux系統(tǒng)的這/opt/redis(即 下的lamp文件夾)tar-zxfredis- cdredis-2.6.17 (一般來(lái)說(shuō),解壓 rpm-qgcc查看gcc是否安裝) yum-yinstallgcc(makeclean清除臨時(shí)文件。之后,找到出錯(cuò)的原因,解決問(wèn)題后再來(lái)重新安裝。)進(jìn)入到 cdmake cdmkdir-p/usr/local/redis/binmkdir-p/usr/local/redis/etccd/lamp/redis-2.6.17cp./redis.conf/usr/local/redis/etccdsrccpmkreleasehdr.shredis-benarkredis-check-aofredis-check-dumpredis-cliredis-serverredis-sentinel/usr/local/redis/binlinux6379/etc/sysconfig/iptables文件:vi加入內(nèi)容并保存:-ARH-Firewall-1-INPUTmstatestateNEWmtcpp–dport6379-j查看端口是否開(kāi)放:/sbin/iptablesL比較重要的3個(gè)可執(zhí)行文件redis-server:Redis服務(wù)器程Redis的啟動(dòng)命/usr/local/redis/bin/redis-或cd./redis-server 為redis-server指定配置redis.conf文daemonizeyes---修改為yes requirepass123456----注釋取消掉設(shè)置賬號(hào)psaux|grep'6379' ---查詢端口kill159886---kill99886---serviceiptablesstop停止redis命令連接方./redis-cli-h-p6379-a"123456" ---redis使用賬號(hào)連接結(jié)果表示成功redis-clishutdownkillredis關(guān)Redis客戶端連接方Redis的基本數(shù)據(jù)類字符串類型 redis:6379>SETmykey"redis"redis:6379>GET在上面的例子中,SET和GET是redis中令,而mykey是鍵的名稱RedisRedisRedis字符串命令的redis:6379>COMMAND SS示redisredis:6379>SETmykey"redis"redis:6379>GETS在上面的例子中,SETGETredis令,而mykeyRedis編命描述說(shuō)1SETkey2GET3GETRANGEkeystart獲取在鍵上的字符串的子字符串編命描述說(shuō)4GETSETkey5GETBITkey返回在鍵處的字符串值中偏移處的位值6MGETkey17SETBITkeyoffset8SETEXkeyseconds9SETNXkeySETRANGEkeyoffsetSTRLEN獲取在鍵中的值的長(zhǎng)MSETkeyvalue[keyvalueMSETNXkeyvalue[keyvaluePSETEXkeymillisecondsINCRINCRBYkeyINCRBYFLOATkeyDECRDECRBYkeyAPPENDkey列表類型Redis(左邊)一個(gè)列表最多可以包含232-1個(gè)元素 ,每個(gè)列表超過(guò)40億個(gè)元素)redisredis:6379>LPUSHrunoobkeyredis:6379>LPUSHrunoobkeyredis:6379>LPUSHrunoobkeyredis:6379>LRANGErunoobkey0Redis命令1BLPOPkey1[key2]2BRPOPkey1[key2]3BRPOPLPUSHsourcedestination從列表出一個(gè)值,將彈出的元素插入到另外一個(gè)列表中并返回它;如果列表沒(méi)有元素會(huì)阻塞列表直到等4LINDEXkey5LINSERTkeyBEFORE|AFTERpivot6LLEN7LPOP8LPUSHkeyvalue19LPUSHXkeyLRANGEkeystartLREMkeycountLSETkeyindexLTRIMkeystartRPOPRPOPLPUSHsourceRPUSHkeyvalue1RPUSHXkeyRedis集合Redis中集合是通過(guò)哈希表實(shí)現(xiàn)的,所以添加,刪除,查找的復(fù)雜度都是O(1)。集合中最大的成員數(shù)為232-1( ,每個(gè)集合可40多億個(gè)成員)。redis:6379>redis:6379>SADDrunoobkeyredis:6379>SADDrunoobkeyredis:6379>SADDrunoobkeyredis:6379>SADDrunoobkeyredis:6379>SMEMBERSSADDrunoobkeyRedis集合命Redis命令1SADDkeymember12SCARD3SDIFFkey14SDIFFSTOREdestinationkey1返回給定所有集合的差集并在destination5SINTERkey16SINTERSTOREdestinationkey1返回給定所有集合的交集并在destination7SISMEMBERkeymemberkey8SMEMBERS9SMOVEsourcedestinationmembersourcedestinationSPOPSRANDMEMBERkeySREMkeymember1SUNIONkey1SUNIONSTOREdestinationkey1所有給定集合的并集在destination集合SSCANkeycursor[MATCHpattern][COUNTRedis有序集合(sortedRedis有序集合和集合一樣也是string類型元素的集合,doubleredis正是通過(guò)分?jǐn)?shù)來(lái)為集合中的成員進(jìn)行232-1 ,每個(gè)集合可40多億個(gè)成員)實(shí)redisredis:6379>ZADDrunoobkey1redis:6379>ZADDrunoobkey2redis:6379>ZADDrunoobkey3redis:6379>ZADDrunoobkey3redis:6379>ZADDrunoobkey4redis:6379>ZRANGErunoobkey010ZADDredisRedis有序集合命redis有序集合的基本命令命令1ZADDkeyscore1member1[score22ZCARD3ZCOUNTkeymin4ZINCRBYkeyincrement5ZINTERSTOREdestinationnumkeyskey[key計(jì)算給定的一個(gè)或多個(gè)有序集的交集并將結(jié)果集在新的有序集合key6ZLEXCOUNTkeymin7ZRANGEkeystartstop8ZRANGEBYLEXkeyminmax[LIMIToffset9ZRANGEBYSCOREkeyminmax[WITHSCORES]ZRANKkeyZREMkeymember[memberZREMRANGEBYLEXkeyminZREMRANGEBYRANKkeystart移除有序集合中給定的區(qū)間的所有成ZREMRANGEBYSCOREkeyminZREVRANGEkeystartstopZREVRANGEBYSCOREkeymaxminZREVRANKkeyZSCOREkeyZUNIONSTOREdestinationnumkeyskey[key計(jì)算給定的一個(gè)或多個(gè)有序集的并集,并在新的keyZSCANkeycursor[MATCHpattern][COUNTRedis哈希Redishash是一個(gè)string類型的field和value的映射表,hash特別適合用于對(duì)象Redis中每個(gè)hash可以232-1鍵值對(duì)(40多億)實(shí):6379>:6379>HMSETrunoobkeyname"redis:6379>HGETALL"redis"redisbasiccommandsforhsetkeymapHeyredis的一些描述信息(namedescriptionlikesvisitors)到哈希表runoobkey中。Redishash命redishash命令1HDELkeyfield22HEXISTSkeykey3HGETkey獲取在哈希表中指定字段的值4key5HINCRBYkeyfieldkeyincrement6HINCRBYFLOATkeyfieldkeyincrement7HKEYS8HLEN9HMGETkeyfield1HMSETkeyfield1value1[field2value2field-value域-值)keyHSETkeyfieldkeyfieldvalueHSETNXkeyfieldfieldHSCANkeycursor[MATCHpattern][COUNTJavaRedis<!--<!--/artifact/redis.clients/jedis--publicclassTestRedis{privateJedispublicvoidsetup()jedisnewJedis("00",6379);}* 字符publicvoidtestString() 添加數(shù)jedis.set("name","xinxin");//向key-->name中放入了value--System.out.println(jedis.get("name"));//執(zhí)行結(jié)果jedis.append("nameismylover拼jedis.del("name");//刪除某個(gè)//設(shè)置多個(gè)鍵值 jedis.incr("age");//進(jìn)行加1操作System.out.println(jedis.get("name")+"-"+jedis.get("age")+"-"+}*redis操作publicvoidtestMap() 添加數(shù)Map<String,String>map=newHashMap<String,String>();map.put("name","xinxin");map.put("age","22"); //取出user中的name,執(zhí)行結(jié)果:[minxr]-->注意結(jié)果是一個(gè)泛型的List<String>rsmap=jedis.hmget("user","name","age","qq");System.out.println(jedis.hmget("user","age"));//因?yàn)閯h除了,所以返回的是System.out.println(jedis.hlen("user"));//返回key為user的鍵中存放的值的個(gè)數(shù)System.out.println(jedis.exists("user"));//是否存在key為user的記錄返回System.out.println(jedis.hkeys("user"));//返回map對(duì)象中的所有System.out.println(jedis.hvals("user"));//返回map對(duì)象中的所有Iterator<String>iter=jedis.hkeys("user").iterator();while(iter.hasNext()){Stringkey=}}*jedis操作publicvoidjedis.del("javaframework");System.out.println(jedis.lrange("javaframework",0,-//先向keyjavaframework中存放三條數(shù)據(jù)jedis.lpush("javaframework","spring");jedis.lpush("javaframework","struts");jedis.lpush("javaframework","hibernate");//再取出所有數(shù)據(jù)jedis.lrange是按范圍取出//第一個(gè)是key,第二個(gè)是起始位置,第三個(gè)是結(jié)束位置,jedis.llen獲取長(zhǎng)度-1表示取得所System.out.println(jedis.lrange("javaframework",0,-jedis.del("javaframework");jedis.rpush("javaframework","spring");jedis.rpush("javaframework","struts");jedis.rpush("javaframework","hibernate");System.out.println(jedis.lrange("javaframework",0,-}*jedis操作*jedis操作publicvoid//移除System.out.println(jedis.sismember("user","who"));//判斷who是否是user}publicvoidtest()throwsInterruptedException//jedisSystem.out.println(jedis.lrange("a",0,-1));//[9,3,6,1]System.out.println(jedis.sort("a1,36,9]//System.out.println(jedis.lrange("a",0,-}publicvoidtestRedisPool(){RedisUtil.getJedis().set("newname","中文測(cè)試");}SpringBoot集成Maven###Redis(RedisConfiguration)###Redis(RedisConfiguration)Java代publicclassRedisService{privateStringRedisTemplatepublicvoidsetObject(Stringkey,Objectvalue)this.setObject(key,value,}publicpublicvoidsetObject(Stringkey,Objectvalue,Longtime)if(StringUtils.isEmpty(key)||value==null)}if(valueinstanceofString)StringstringValue=(String)if(time==null)stringRedisTemplate.opsForValue().set(key,}else}}if(valueinstanceofList)List<String>listValue=(List<String>)for(Stringstring:listValue){stringRedisTemplate.opsForList().leftPush(key,string);}}}publicvoiddelKey(Stringkey){}publicStringgetString(Stringkey)return}}Redis主從linux克隆虛擬生成新的mack地主從配redis主從1、redis的功能是支持多個(gè)數(shù)據(jù)庫(kù)之間的數(shù)據(jù)同步。一類是主數(shù)據(jù)庫(kù)(master)通過(guò)redis的功能可以很好的實(shí)現(xiàn)數(shù)據(jù)庫(kù)的讀寫(xiě)分離提高服務(wù)器的負(fù)載能力。主數(shù)據(jù)庫(kù)主要進(jìn)行寫(xiě)操作,而從數(shù)據(jù)庫(kù)負(fù)責(zé)讀操作。主從過(guò)主從過(guò)程:見(jiàn)下過(guò)程2:主數(shù)據(jù)庫(kù)接收到sync命令后會(huì)開(kāi)始在保存快照(執(zhí)行rdb操作),并將保存期間接收到令緩存起來(lái)3:當(dāng)快照完成后,redis會(huì)將快照文件和所有緩存令發(fā)送給從數(shù)據(jù)庫(kù)4:從數(shù)據(jù)庫(kù)收到后,會(huì)載入快照文件并執(zhí)行收到的緩存令redisredis.confslaveof30masterauth123456---主redis服務(wù)器配置了,則需要配Redis哨兵機(jī)什么是哨兵機(jī)Redis的哨兵(sentinel)Redis服務(wù)器,該系統(tǒng)執(zhí)行以下三個(gè)任務(wù)·(Monitoring):哨兵(sentinel)會(huì)不斷地檢查你的Master和Slave是提醒(Notification):當(dāng)被的某個(gè)Redis出現(xiàn)問(wèn)題時(shí),哨兵(sentinel)可以通過(guò)API向管理員或者其他應(yīng)用程序發(fā)送通知。自動(dòng)故障遷移(Automaticfailover):當(dāng)一個(gè)Master不能正常工作時(shí)哨兵(sentinel)會(huì)開(kāi)始一次自動(dòng)故障遷移操作,它會(huì)將失效Master的其中一個(gè)Slave升級(jí)為新的Master,并讓失效Master的其他Slave改為新的Master;當(dāng)客戶端試圖連接失效的Master時(shí),集群也會(huì)向客戶端返回新Master的地址,使得集群可以使用Master代替失Master。哨兵(sentinel)是一個(gè)分布式系統(tǒng),你可以在一個(gè)架構(gòu)中運(yùn)行多個(gè)哨兵(sentinel)進(jìn)程,這些進(jìn)程使用流言協(xié)議(gossipprotocols)Master是否下線的信息,并使用投票協(xié)議(agreementprotocols)來(lái)決定是否執(zhí)行自動(dòng)故障遷移,以及選擇哪個(gè)Slave作為Master.的”認(rèn)為宕機(jī)”SubjectiveDown,簡(jiǎn)稱若“哨兵群”中的多數(shù)sentinel,都報(bào)告某一master沒(méi)響應(yīng),系統(tǒng)才認(rèn)為該master"徹底"(即:客觀上的真正down機(jī),ObjectiveDown,odown),vote算法,slave節(jié)點(diǎn)中,master,然后自動(dòng)修改相關(guān)配置.雖然哨兵(sentinel)redis-sentinel但實(shí)際上它只是RedisRedis服務(wù)器時(shí)通過(guò)給定--sentinel選項(xiàng)來(lái)啟動(dòng)哨兵(sentinel).哨兵(sentinel)zookeeper非常類似哨兵模式修改配實(shí)現(xiàn)步驟cp sentinel.confsentinelmonitor 336379 #主節(jié)點(diǎn)名稱IP端次5000sentineldown-after-millisecondsmymastersentinelparallel-syncsmymaster2---./redis-server/usr/local/redis/etc/sentinel.conf--sentinelRedis事Redis事Redis實(shí)中,最后由EXEC命令觸發(fā)事務(wù),一并執(zhí)行事務(wù)中的所有命令:redisredis:6379>MULTIredis:6379>SETbook-name"MasteringC++in21days"redis:6379>GETbook-nameredis:6379>SADDtag"C++""Programming""MasteringSeries"redis:6379>SMEMBERStagredis:6379>"MasteringC++in211)"Mastering2)3)3)Redis事務(wù)命redis命令1234WATCHkey5WATCHkey[key監(jiān)視一個(gè)(或多個(gè))key,如果在事務(wù)執(zhí)行之前這個(gè)(或這些)key被其令所改動(dòng),那么事務(wù)將被打斷Redis持久什么Redis持久Redis持久化,Redis持久化(AOF與RDB兩種模式RDB持久RDB優(yōu)點(diǎn):使用單獨(dú)子進(jìn)程來(lái)進(jìn)行持久化,主進(jìn)程不會(huì)進(jìn)行任何IO操作,保證redis的缺點(diǎn):RDB是間隔一段時(shí)間進(jìn)行持久化,如果持久化之間redis發(fā)生故障,會(huì)發(fā)生數(shù)據(jù)redisnmkey被修改RDB操作。這個(gè)操作就類Redis的所有數(shù)據(jù),一次快照數(shù)據(jù)。所有這個(gè)持久化方法也通常叫做snapshots。RDB默認(rèn)開(kāi)啟,redis.conf#dbfilename#dbfilename:持久化數(shù) 在本地的文dbfilename下在當(dāng)前dir##snapshot觸發(fā)的時(shí)機(jī)##可以通過(guò)“save“””來(lái)關(guān)閉snapshot功能#save時(shí)間,以下分別表示更改了1key時(shí)間隔900s進(jìn)行持久key60s進(jìn) save900;更改了10key300s進(jìn)save300save60##當(dāng)snapshot時(shí)出現(xiàn)錯(cuò)誤無(wú)法繼續(xù)時(shí),是否阻塞客戶端“變更操作”,“錯(cuò)誤”可能因?yàn)榇疟P(pán)已滿/磁盤(pán)故障/OS級(jí)別異常stop-writes-on-bgsave-error##是否啟用rdb“yes”“額外的cu消耗”pressionAOF持久Append-onlyfile,將“操作+數(shù)據(jù)”以格式化指令的方式追加到操作日志文件的尾append操作返回后(已經(jīng)寫(xiě)入到文件或者即將寫(xiě)入),才進(jìn)行實(shí)際的數(shù)據(jù)變更,“日志文件”保存了歷史所有的操作過(guò)程;當(dāng)server需要數(shù)據(jù)恢復(fù)時(shí),可以直接replay此日AOFmysqlbin.logapache.log、zookeepertxn-log簡(jiǎn)直異曲同工。AOF文件內(nèi)容是字符串,非常容易閱讀和解析。優(yōu)點(diǎn):可以保持更高的數(shù)據(jù)完整性,如果設(shè)置追加file的時(shí)間是1s,如果redis發(fā)生故1sredis-check-aof來(lái)進(jìn)行日志修復(fù);AOF文件沒(méi)被rewrite之前(文件過(guò)大時(shí)會(huì)對(duì)命令進(jìn)行合并重寫(xiě)),可以刪除其中的某些命令(比如誤操作的flushall)。缺點(diǎn):AOFRDB等),如果server中持續(xù)的大量變更操作,將會(huì)導(dǎo)致AOF文件非常的龐大,意味著server失效后,數(shù)據(jù)恢復(fù)的過(guò)程將會(huì)很長(zhǎng);事實(shí)上,一條數(shù)據(jù)經(jīng)過(guò)多次變更,將會(huì)產(chǎn)生多條AOF記錄,其實(shí)只要保存當(dāng)前的狀態(tài),歷史的操作記錄是可以拋棄的;因?yàn)锳OF持久化模式還伴生了“AOFrewrite”。AOF的特性決定了它相對(duì)比較安全,如果你期望數(shù)據(jù)更少的丟失,那么可以采用AOF模式。如果AOF文件正在被寫(xiě)入時(shí)突然server失效,有可能導(dǎo)致文件的最后一次記錄是不完整,你可以通過(guò)手工或者程序的方式去檢測(cè)并修正不完整的記錄,以便通過(guò)aof文件恢復(fù)能夠正常;同時(shí)需要提醒,如果你的redis持久化中有aof,那么在server故障失效后再次啟動(dòng)前,需要檢測(cè)aof文件的完整性。AOF默認(rèn)關(guān)閉,開(kāi)啟方法,修改配置文件reds.conf:appendonly####aof功能的開(kāi)關(guān),默認(rèn)為“no”,可以通過(guò)“yes”aof##只有在“yes”下,aof重寫(xiě)/appendonly##aofappendfilename##aof操作中文件同步策略,有三個(gè)合法值:alwayseverysecno,appendfsync##aof-rewrite期間,appendfsync是否暫緩文件同步,"no"表示“不暫緩”,“yes”表no-appendfsync-on-rewrite##aof文件rewrite觸發(fā)的最小文件尺寸(mb,gb),只有大于此aof文件大于此尺寸是才會(huì)觸發(fā)rewrite,默認(rèn)“64mb”,建議“512mb”auto-aof-rewrite-min-size##相對(duì)于“上一次”rewriterewriteaof##rewrite之后,redis都會(huì)記錄下此時(shí)“aof”文件的大小(A)A*(1+p)##rewriteaofaofauto-aof-rewrite-percentageAOF是文件操作,對(duì)于變更操作比較密集的server,那么必將造成磁盤(pán)IO的負(fù)荷加重;此外linux對(duì)文件操作采取了“延遲寫(xiě)入”,即并非每次write操作都會(huì)觸發(fā)實(shí)際磁盤(pán)操作,而是進(jìn)入了buffer中,當(dāng)buffer數(shù)據(jù)達(dá)到閥值時(shí)觸發(fā)實(shí)際寫(xiě)入(也有其他時(shí)機(jī))linuxbuffer沒(méi)有刷新到磁盤(pán),此時(shí)物理機(jī)器失效(比如斷電)aof記錄的丟失。通過(guò)上述配置文件,可以得知redis提供了3中aof記錄同步選項(xiàng):操作和阻塞延遲,是IO開(kāi)支較大。everysecredis推薦的方式。如果遇到物理服務(wù)器故障,有可能導(dǎo)致最近一秒內(nèi)aof記錄丟失(可能為部分丟失)。no:redis并不直接調(diào)用文件同步,而是交給操作系統(tǒng)來(lái)處理,操作系統(tǒng)可以根據(jù)buffer通道空閑時(shí)間等擇機(jī)觸發(fā)同步;這是一種普通的文件操作方式。性能較好,在物理服務(wù)器故障時(shí),數(shù)據(jù)丟失量會(huì)因OS配置有關(guān)。AOF文件會(huì)不斷增大,它的大小直接影響“故障恢復(fù)”的時(shí)間,而且AOF文件中歷史操作是可以丟棄的。AOFrewrite操作就是“壓縮”AOF文件的過(guò)程,當(dāng)然redis并沒(méi)有采用“基于原aof文件”來(lái)重寫(xiě)的方式,而是采取了類似snapshot的方式:基于copy-on-writeaofAOFrewrite能夠正確反應(yīng)當(dāng)前內(nèi)存數(shù)據(jù)的狀態(tài),這正是我們所需要的;*rewrite過(guò)程中,對(duì)于新的

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論