版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Redis是一個(gè)基于內(nèi)存的高性能key-value數(shù)據(jù)庫(kù)。(有空再補(bǔ)充,有理解錯(cuò)誤 或不足歡迎指正)Reids的特點(diǎn)Redis本質(zhì)上是一個(gè)Key-Value類型的內(nèi)存數(shù)據(jù)庫(kù),很像 memcached ,整個(gè)數(shù) 據(jù)庫(kù)統(tǒng)統(tǒng)加載在內(nèi)存當(dāng)中進(jìn)行操作,定期通過(guò)異步操作把數(shù)據(jù)庫(kù)數(shù)據(jù)flush到硬盤上進(jìn)行保存。因?yàn)槭羌儍?nèi)存操作,Redis的性能非常出色,每秒可以處理超過(guò)10萬(wàn)次讀寫操作,是已知性能最快的 Key-Value DB 。Redis的出色之處不僅僅是性能,Redis最大的魅力是支持保存多種數(shù)據(jù)結(jié)構(gòu), 此外單個(gè)value的最大限制是1GB,不像 memcached只能保存1MB的數(shù)據(jù), 因此Redi
2、s可以用來(lái)實(shí)現(xiàn)很多有用的功能,比方說(shuō)用他的List來(lái)做FIFO雙向鏈 表,實(shí)現(xiàn)一個(gè)輕量級(jí)的高性 能消息隊(duì)列服務(wù),用他的 Set可以做高性能的tag 友e本蛋蛋 亦沉專專0另外Redis也可以對(duì)存入的Key-Value設(shè)置expire時(shí)間,因此也可以被當(dāng)作一 個(gè)功能加強(qiáng)版的memcached來(lái)用。Redis的主要缺點(diǎn)是數(shù)據(jù)庫(kù)容量受到物理內(nèi)存的限制,不能用作海量數(shù)據(jù)的高性 能讀寫,因此Redis適合的場(chǎng)景主要局限在較小數(shù)據(jù)量的高性能操作和運(yùn)算上。Redis支持的數(shù)據(jù)類型Redis通過(guò)Key-Value的單值不同類型來(lái)區(qū)分,以下是支持的類型:StringsListsSets求交集、并集Sorted
3、Sethashes為什么redis需要把所有數(shù)據(jù)放到內(nèi)存中?Redis為了達(dá)到最快的讀寫速度將數(shù)據(jù)都讀到內(nèi)存中,并通過(guò)異步的方式將數(shù)據(jù)寫入磁盤。所以redis具有快速和數(shù)據(jù)持久化的特征。如果不將數(shù)據(jù)放在內(nèi)存中,磁盤I/O速度為嚴(yán)重影響redis的性能。在內(nèi)存越來(lái) 越便宜的今天,redis將會(huì)越來(lái)越受歡迎。如果設(shè)置了最大使用的內(nèi)存,則數(shù)據(jù)已有記錄數(shù)達(dá)到內(nèi)存限值后不能繼續(xù)插入新 值。Redis是單進(jìn)程單線程的redis利用隊(duì)列技術(shù)將并發(fā)訪問(wèn)變?yōu)樯晷性L問(wèn),消除了傳統(tǒng)數(shù)據(jù)庫(kù)申行控制的開 銷虛擬內(nèi)存當(dāng)你的key很小而value很大時(shí),使用VM的效果會(huì)比較好.因?yàn)檫@樣節(jié)約的內(nèi)存 比較大.當(dāng)你的key不小時(shí)
4、,可以考慮使用一些非常方法將很大的key變成很大的value,比如你可以考慮將key,value組合成一個(gè)新的value.vm-max-threads這個(gè)參數(shù),可以設(shè)置訪問(wèn)swap文件的線程數(shù),設(shè)置最好不要超過(guò) 機(jī)器的核數(shù),如果設(shè)置為0,那么所有對(duì)swap文件的操作都是串行的.可能會(huì)造成比較長(zhǎng)時(shí)間的延遲,但是對(duì)數(shù)據(jù)完整性有很好的保證.自己測(cè)試的時(shí)候發(fā)現(xiàn)用虛擬內(nèi)存性能也不錯(cuò)。如果數(shù)據(jù)量很大,可以考慮分布式或者其他數(shù)據(jù)庫(kù)分布式redis支持主從的模式。原則: Master會(huì)將數(shù)據(jù)同步到 slave ,而slave不會(huì)將 數(shù)據(jù)同步到master。Slave啟動(dòng)時(shí)會(huì)連接 master來(lái)同步數(shù)據(jù)。這是一
5、個(gè)典型的分布式讀寫分離模型。我們可以利用master來(lái)插入數(shù)據(jù),slave 提供檢索服務(wù)。這樣可以有效減少單個(gè)機(jī)器的并發(fā)訪問(wèn)數(shù)量。讀寫分離模型通過(guò)增加Slave DB的數(shù)量,讀的性能可以線性增長(zhǎng)。為了避免Master DB的單點(diǎn)故障,集群一般都會(huì)采用兩臺(tái)Master DB做雙機(jī)熱備,所以整個(gè)集群的讀和寫的可用性都非常高。讀寫分離架構(gòu)的缺陷在于,不管是 Master還是Slave,每個(gè)節(jié)點(diǎn)都必須保存完 整的數(shù)據(jù),如果在數(shù)據(jù)量很大的情況下,集群的擴(kuò)展能力還是受限于單個(gè)節(jié)點(diǎn)的 存儲(chǔ)能力,而且對(duì)于 Write-intensive類型的應(yīng)用,讀寫分離架構(gòu)并不適合。數(shù)據(jù)分片模型為了解決讀寫分離模型的缺陷,
6、可以將數(shù)據(jù)分片模型應(yīng)用進(jìn)來(lái)??梢詫⒚總€(gè)節(jié)點(diǎn)看成都是獨(dú)立的 master,然后通過(guò)業(yè)務(wù)實(shí)現(xiàn)數(shù)據(jù)分片。結(jié)合上面兩種模型,可以將每個(gè)master設(shè)計(jì)成由一個(gè)master和多個(gè)slave組成 的模型。Redis的回收策略volatile-lru :從已設(shè)置過(guò)期時(shí)間的數(shù)據(jù)集(server.dbi.expires )中挑選最近最少使用的數(shù)據(jù)淘汰volatile-ttl :從已設(shè)置過(guò)期時(shí)間的數(shù)據(jù)集(server.dbi.expires )中挑選將要過(guò)期 的數(shù)據(jù)淘汰volatile-random :從已設(shè)置過(guò)期時(shí)間的數(shù)據(jù)集(server.dbi.expires )中任意選 擇數(shù)據(jù)淘汰allkeys-lru :
7、從數(shù)據(jù)集(server.dbi.dict )中挑選最近最少使用的數(shù)據(jù)淘汰allkeys-random :從數(shù)據(jù)集(server.dbi.dict )中任意選擇數(shù)據(jù)淘汰no-enviction (驅(qū)逐):禁止驅(qū)逐數(shù)據(jù)1. 使用Redis有哪些好處?速度快,因?yàn)閿?shù)據(jù)存在內(nèi)存中,類似于HashMap , HashMap的優(yōu)勢(shì)就是查找和 操作的時(shí)間復(fù)雜度都是O(1)支持豐富數(shù)據(jù)類型,支持 string , list, set, sorted set , hash支持事務(wù),操作都是原子性,所謂的原子性就是對(duì)數(shù)據(jù)的更改要么全部執(zhí)行,要么全部不執(zhí)行豐富的特性:可用于緩存,消息,按 key設(shè)置過(guò)期時(shí)間,過(guò)期后
8、將會(huì)自動(dòng)刪除2. redis相比memcached有哪些優(yōu)勢(shì)?memcached所有的值均是簡(jiǎn)單的字符串,redis作為其替代者,支持更為豐富 的數(shù)據(jù)類型redis的速度比 memcached 快很多redis可以持久化其數(shù)據(jù)3. redis常見性能問(wèn)題和解決方案:Master最好不要做任何持久化工作,如 RDB內(nèi)存快照和AOF日志文件如果數(shù)據(jù)比較重要,某個(gè)Slave開啟AOF備份數(shù)據(jù),策略設(shè)置為每秒同步一次為了主從復(fù)制的速度和連接的穩(wěn)定性,Master和Slave最好在同一個(gè)局域網(wǎng)內(nèi)盡量避免在壓力很大的主庫(kù)上增加從庫(kù)主從復(fù)制不要用圖狀結(jié)構(gòu),用單向鏈表結(jié)構(gòu)更為穩(wěn)定,即: Master這樣的結(jié)構(gòu)
9、方便解決單點(diǎn)故障問(wèn)題,實(shí)現(xiàn)Slave對(duì)Master的替換。如果Master掛了,可以立刻啟用Slave1做Master,其他不變。4. MySQL里有2000w數(shù)據(jù),redis中只存20w的數(shù)據(jù),如何保證redis中的數(shù) 據(jù)都是熱點(diǎn)數(shù)據(jù)相關(guān)知識(shí):redis內(nèi)存數(shù)據(jù)集大小上升到一定大小的時(shí)候,就會(huì)施行數(shù)據(jù)淘汰策 略。redis提供6種數(shù)據(jù)淘汰策略,上文已經(jīng)列出。5. Memcache與Redis的區(qū)別都有哪些?1)、存儲(chǔ)方式Memecache把數(shù)據(jù)全部存在內(nèi)存之中,斷電后會(huì)掛掉,數(shù)據(jù)不能超過(guò)內(nèi)存大小。Redis有部份存在硬盤上,這樣能保證數(shù)據(jù)的持久性。2)、數(shù)據(jù)支持類型Memcache對(duì)數(shù)據(jù)類型
10、支持相對(duì)簡(jiǎn)單。Redis有復(fù)雜的數(shù)據(jù)類型。3)、使用底層模型不同它們之間底層實(shí)現(xiàn)方式以及與客戶端之間通信的應(yīng)用協(xié)議不一樣。Redis直接自己構(gòu)建了 VM機(jī)制,因?yàn)橐话愕南到y(tǒng)調(diào)用系統(tǒng)函數(shù)的話,會(huì)浪費(fèi) 一定的時(shí)間去移動(dòng)和請(qǐng)求。4)、value 大小redis最大可以達(dá)到1GB,而memcache只有1MB6, Redis常見的性能問(wèn)題都有哪些?如何解決?1) .Master寫內(nèi)存快照,save命令調(diào)度rdbSave函數(shù),會(huì)阻塞主線程的工作,當(dāng) 快照比較大時(shí)對(duì)性能影響是非常大的,會(huì)間斷性暫停服務(wù),所以 Master最好不 要寫內(nèi)存快照。2) .Master AOF持久化,如果不重寫AOF文件,這個(gè)持
11、久化方式對(duì)性能的影響 是最小的,但是AOF文件會(huì)不斷增大,AOF文件過(guò)大會(huì)影響Master重啟的恢 復(fù)速度。Master最好不要做任何持久化工作, 包括內(nèi)存快照和AOF日志文件,特別是不 要啟用內(nèi)存快照做持久化,如果數(shù)據(jù)比較關(guān)鍵,某個(gè)Slave開啟AOF備份數(shù)據(jù), 策略為每秒同步一次。3) .Master調(diào)用BGREWRITEAOF 重寫AOF文件,AOF在重寫的時(shí)候會(huì)占大量 的CPU和內(nèi)存資源,導(dǎo)致服務(wù)load過(guò)高,出現(xiàn)短暫服務(wù)暫停現(xiàn)象。4) . Redis主從復(fù)制的性能問(wèn)題,為了主從復(fù)制的速度和連接的穩(wěn)定性,Slave和 Master最好在同一個(gè)局域網(wǎng)內(nèi)7, redis最適合的場(chǎng)景Redi
12、s最適合所有數(shù)據(jù)in-momory的場(chǎng)景,雖然Redis也提供持久化功能,但實(shí) 際更多的是一個(gè)disk-backed的功能,跟傳統(tǒng)意義上的持久化有比較大的差別。那么可能大家就會(huì)有疑問(wèn),似乎 Redis更像一個(gè)加強(qiáng)版的Memcached ,那么何 時(shí)使用Memcached,何時(shí)使用Redis呢?如果簡(jiǎn)單地比較Redis與Memcached的區(qū)別,大多數(shù)都會(huì)得到以下觀點(diǎn):Redis不僅僅支持簡(jiǎn)單的k/v類型的數(shù)據(jù),同時(shí)還提供list, set, zset, hash等 數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)。Redis支持?jǐn)?shù)據(jù)的備份,即 master-slave模式的數(shù)據(jù)備份。Redis支持?jǐn)?shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)
13、據(jù)保持在磁盤中,重啟的時(shí)候可以 再次加載進(jìn)行使用。(1)、會(huì)話緩存(Session Cache )最常用的一種使用Redis的情景是會(huì)話緩存(session cache)。用Redis緩存 會(huì)話比其他存儲(chǔ)(如 Memcached )的優(yōu)勢(shì)在于:Redis提供持久化。當(dāng)維護(hù)一 個(gè)不是嚴(yán)格要求一致性的緩存時(shí),如果用戶的購(gòu)物車信息全部丟失,大部分人都 會(huì)不高興的,現(xiàn)在,他們還會(huì)這樣嗎?幸運(yùn)的是,隨著 Redis這些年的改進(jìn),很容易找到怎么恰當(dāng)?shù)氖褂肦edis來(lái)緩存會(huì)話的文檔。甚至廣為人知的商業(yè)平臺(tái)Magento也提供Redis的插件。(2)、全頁(yè)緩存(FPC)除基本的會(huì)話token之外,Redis還
14、提供很簡(jiǎn)便的FPC平臺(tái)。回到一致性問(wèn)題, 即使重啟了 Redis實(shí)例,因?yàn)橛写疟P的持久化,用戶也不會(huì)看到頁(yè)面加載速度的 下降,這是一個(gè)極大改進(jìn),類似 PHP本地FPC。再次以Magento為例,Magento提供一個(gè)插件來(lái)使用Redis作為全頁(yè)緩存后端。此外,對(duì) WordPress的用戶來(lái)說(shuō),Pantheon有一個(gè)非常好的插件 wp-redis , 這個(gè)插件能幫助你以最快速度加載你曾瀏覽過(guò)的頁(yè)面。(3)、隊(duì)列Reids在內(nèi)存存儲(chǔ)引擎領(lǐng)域的一大優(yōu)點(diǎn)是提供list和set操作,這使得Redis能作為一個(gè)很好的消息隊(duì)列平臺(tái)來(lái)使用。Redis作為隊(duì)列使用的操作,就類似于本地程序語(yǔ)言(如 Python)
15、對(duì)list的push/pop 操作。如果你快速的在Google中搜索“Redis queues ;你馬上就能找到大量的開源項(xiàng) 目,這些項(xiàng)目的目的就是利用Redis創(chuàng)建非常好的后端工具,以滿足各種隊(duì)列需 求。例如,Celery有一個(gè)后臺(tái)就是使用 Redis作為broker,你可以從這里去查 看。(4),排行榜/計(jì)數(shù)器Redis在內(nèi)存中對(duì)數(shù)字進(jìn)行遞增或遞減的操作實(shí)現(xiàn)的非常好。集合( Set)和有 序集合(Sorted Set)也使得我們?cè)趫?zhí)行這些操作的時(shí)候變的非常簡(jiǎn)單,Redis只是正好提供了這兩種數(shù)據(jù)結(jié)構(gòu)。所以,我們要從排序集合中獲取到排名最靠前 的10個(gè)用戶 求們稱之為“user_scores
16、,"我們只需要像下面一樣執(zhí)行即可:當(dāng)然,這是假定你是根據(jù)你用戶的分?jǐn)?shù)做遞增的排序。如果你想返回用戶及用戶 的分?jǐn)?shù),你需要這樣執(zhí)行:ZRANGE user_scores 0 10 WITHSCORESAgora Games就是一個(gè)很好的例子,用Ruby實(shí)現(xiàn)的,它的排行榜就是使用Redis 來(lái)存儲(chǔ)數(shù)據(jù)的,你可以在這里看到。(5)、發(fā)布/訂閱最后(但肯定不是最不重要的)是 Redis的發(fā)布/訂閱功能。發(fā)布/訂閱的使用場(chǎng) 景確實(shí)非常多。我已看見人們?cè)谏缃痪W(wǎng)絡(luò)連接中使用,還可作為基于發(fā)布/訂閱的腳本觸發(fā)器,甚至用 Redis的發(fā)布/訂閱功能來(lái)建立聊天系統(tǒng)?。ú?,這是真 的,你可以去核實(shí))。Redis提供的所有特性中,我感覺這個(gè)是喜歡的人最少的一個(gè),雖然它為用戶提 供如果此多功能。那如何學(xué)習(xí)才能快速入門并精通呢?當(dāng)真正開始學(xué)習(xí)的時(shí)候難免不知道從哪入手, 導(dǎo)致效率低下影響繼續(xù)學(xué)習(xí)的信心。但最重要的是不知道哪些技術(shù)需要重點(diǎn)掌握,學(xué)習(xí)時(shí)頻
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024正規(guī)個(gè)人基金份額購(gòu)買合同范本3篇
- 二零二四年度建筑設(shè)計(jì)委托合同范本
- 2024攤位轉(zhuǎn)讓合同范本
- 2025年度城市應(yīng)急響應(yīng)安保支援協(xié)議3篇
- 2024年餐飲服務(wù)協(xié)議:快餐店顧客權(quán)益保障
- 2025年度綠色環(huán)保型廁所改造施工合同范本3篇
- 長(zhǎng)沙學(xué)院《影視攝影技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2適用于不同行業(yè)的2024年版承包合同
- 教育教學(xué)行業(yè)教學(xué)理念培訓(xùn)實(shí)踐
- 青春奮進(jìn)社團(tuán)助力實(shí)現(xiàn)夢(mèng)想計(jì)劃
- 個(gè)人掃描的吳玉生楷書7000字
- 醫(yī)院污水處理工程施工組織設(shè)計(jì)
- 閘板防噴器使用手冊(cè) 精品
- 歡迎新同學(xué)幼兒園中小學(xué)開學(xué)第一課入學(xué)準(zhǔn)備ppt
- 金手指外觀檢驗(yàn)重點(diǎn)標(biāo)準(zhǔn)
- 新教材人教版高中化學(xué)選擇性必修1全冊(cè)各章節(jié)知識(shí)點(diǎn)考點(diǎn)重點(diǎn)難點(diǎn)歸納總結(jié)匯總
- 2022年五年級(jí)英語(yǔ)下冊(cè)期末單詞聽寫表上海教育出版社
- 高級(jí)財(cái)務(wù)管理(第2版)-教學(xué)大綱
- 檔案保護(hù)技術(shù)概論期末復(fù)習(xí)資料教材
- 能源管理制度與能耗核算體系模板
- 焊接模擬ansys實(shí)例參考模板
評(píng)論
0/150
提交評(píng)論