版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、Redis是一個基于內(nèi)存的高性能keyvalue數(shù)據(jù)庫。(有空再補充,有理解錯 誤或不足歡迎指正)Reids的特點Redis本質(zhì)上是一個Key-Value類型的內(nèi)存數(shù)據(jù)庫彳艮像memcached ,整個數(shù)據(jù) 庫統(tǒng)統(tǒng)加載在內(nèi)存當(dāng)中進行操作,定期通過異步操作把數(shù)據(jù)庫數(shù)據(jù) flush到硬盤 上進行保存。因為是純內(nèi)存操作,Redis的性能非常出色,每秒可以處理超過10萬次讀寫操作, 是已知性能最快的Key-Value DB。Redis的出色之處不僅僅是性能,Redis最大的魅力是支持保存多種數(shù)據(jù)結(jié)構(gòu),此外單個value的最大限制是1GB,不像memcached只能保存1MB的數(shù)據(jù),因 此Redis可以
2、用來實現(xiàn)很多有用的功能,比方說用他的List來做FIFO雙向鏈表, 實現(xiàn)一個輕量級的高性 能消息隊列服務(wù),用他的Set可以做高性能的tag系統(tǒng)等另外Redis也可以對存入的KeyValue設(shè)置expire時間,因此也可以被當(dāng)作一 個功能加強版的memcached來用。Redis的主要缺點是數(shù)據(jù)庫容量受到物理內(nèi)存的限制,不能用作海量數(shù)據(jù)的高性能讀寫,因此Redis適合的場景主要局限在較小數(shù)據(jù)量的高性能操作和運算上。Redis支持的數(shù)據(jù)類型Redis通過KeyValue的單值不同類型來區(qū)分,以下是支持的類型:StringsListsSets求交集、并集Sorted Set hashes為什么red
3、is需要把所有數(shù)據(jù)放到內(nèi)存中?Redis為了達到最快的讀寫速度將數(shù)據(jù)都讀到內(nèi)存中,并通過異步的方式將數(shù)據(jù)寫入磁盤。所以redis具有快速和數(shù)據(jù)持久化的特征。如果不將數(shù)據(jù)放在內(nèi)存中,磁盤I/O速度為嚴(yán)重影響redis的性能。在內(nèi)存越來 越便宜的今天,redis將會越來越受歡迎。如果設(shè)置了最大使用的內(nèi)存,則數(shù)據(jù)已有記錄數(shù)達到內(nèi)存限值后不能繼續(xù)插入新 值。Redis是單進程單線程的redis利用隊列技術(shù)將并發(fā)訪問變?yōu)樯晷性L問,消除了傳統(tǒng)數(shù)據(jù)庫申行控制的開銷虛擬內(nèi)存當(dāng)你的key很小而value很大時,使用VM的效果會比較好。因為這樣節(jié)約的內(nèi) 存比較大。當(dāng)你的key不小時,可以考慮使用一些非常方法將很大
4、的key變成很大的value ,比如你可以考慮將key, value組合成一個新的value.vm-max threads這個參數(shù),可以設(shè)置訪問swap文件的線程數(shù),設(shè)置最好不要 超過機器的核數(shù),如果設(shè)置為0,那么所有對swap文件的操作都是串行的.可能會造成比較長時間的延遲,但是對數(shù)據(jù)完整性有很好的保證.自己測試的時候發(fā)現(xiàn)用虛擬內(nèi)存性能也不錯.如果數(shù)據(jù)量很大,可以考慮分布式或 者其他數(shù)據(jù)庫分布式redis支持主從的模式。原則:Master會將數(shù)據(jù)同步到slave ,而slave不會將數(shù) 據(jù)同步到master。Slave啟動時會連接 master來同步數(shù)據(jù).這是一個典型的分布式讀寫分離模型.我
5、們可以利用master來插入數(shù)據(jù),slave 提供檢索服務(wù).這樣可以有效減少單個機器的并發(fā)訪問數(shù)量.讀寫分離模型通過增加Slave DB的數(shù)量,讀的性能可以線性增長.為了避免Master DB的單 點故障,集群一般都會采用兩臺Master DB做雙機熱備,所以整個集群的讀和寫的可用性都非常高。讀寫分離架構(gòu)的缺陷在于,不管是 Master還是Slave ,每個節(jié)點都必須保存完 整的數(shù)據(jù),如果在數(shù)據(jù)量很大的情況下,集群的擴展能力還是受限于單個節(jié)點的 存儲能力,而且對于Write-intensive類型的應(yīng)用,讀寫分離架構(gòu)并不適合。數(shù)據(jù)分片模型為了解決讀寫分離模型的缺陷,可以將數(shù)據(jù)分片模型應(yīng)用進來。
6、可以將每個節(jié)點看成都是獨立的master,然后通過業(yè)務(wù)實現(xiàn)數(shù)據(jù)分片。結(jié)合上面兩種模型,可以將每個master設(shè)計成由一個master和多個slave組成 的模型.Redis的回收策略volatile lru:從已設(shè)置過期時間的數(shù)據(jù)集(server 0 db i .expires)中挑選最 近最少使用的數(shù)據(jù)淘汰volatile-ttl:從已設(shè)置過期時間的數(shù)據(jù)集(server。db i。expires)中挑選將要過 期的數(shù)據(jù)淘汰volatile random :從已設(shè)置過期時間的數(shù)據(jù)集(server 0 db i .expires )中 任意選擇數(shù)據(jù)淘汰allkeys -lru:從數(shù)據(jù)集(serv
7、er。db i 。 dict)中挑選最近最少使用的數(shù)據(jù)淘 allkeys-random :從數(shù)據(jù)集(server。dbi.dict)中任意選擇數(shù)據(jù)淘汰no-enviction(驅(qū)逐):禁止驅(qū)逐數(shù)據(jù)1。使用Redis有哪些好處?速度快,因為數(shù)據(jù)存在內(nèi)存中,類似于HashMap , HashMap的優(yōu)勢就是查找和 操作的時間復(fù)雜度都是O (1)支持豐富數(shù)據(jù)類型,支持 string,list,set , sorted set , hash支持事務(wù),操作都是原子性,所謂的原子性就是對數(shù)據(jù)的更改要么全部執(zhí)行,要么 全部不執(zhí)行豐富的特性:可用于緩存,消息,按 key設(shè)置過期時間,過期后將會自動刪除2。 r
8、edis相比memcached有哪些優(yōu)勢?memcached所有的值均是簡單的字符串,redis作為其替代者,支持更為豐富的數(shù)據(jù)類型redis的速度比 memcached 快很多redis可以持久化其數(shù)據(jù)3。 redis常見性能問題和解決方案:Master最好不要做任何持久化工作,如RDB內(nèi)存快照和AOF日志文件如果數(shù)據(jù)比較重要,某個Slave開啟AOF備份數(shù)據(jù),策略設(shè)置為每秒同步一次為了主從復(fù)制的速度和連接的穩(wěn)定性,Master和Slave最好在同一個局域網(wǎng)內(nèi)盡量避免在壓力很大的主庫上增加從庫主從復(fù)制不要用圖狀結(jié)構(gòu),用單向鏈表結(jié)構(gòu)更為穩(wěn)定,即:Master這樣的結(jié)構(gòu)方便解決單點故障問題,實現(xiàn)
9、Slave對Master的替換。如果 Master 掛了,可以立刻啟用Slave1做Master,其他不變。4。MySQL里有2000w數(shù)據(jù),redis中只存20w的數(shù)據(jù),如何保證redis中的數(shù)據(jù) 都是熱點數(shù)據(jù)相關(guān)知識:redis內(nèi)存數(shù)據(jù)集大小上升到一定大小的時候,就會施行數(shù)據(jù)淘汰策略.redis提供6種數(shù)據(jù)淘汰策略,上文已經(jīng)列出.5. Memcache與Redis的區(qū)別都有哪些?1)、存儲方式Memecache把數(shù)據(jù)全部存在內(nèi)存之中,斷電后會掛掉,數(shù)據(jù)不能超過內(nèi)存大小.Redis有部份存在硬盤上,這樣能保證數(shù)據(jù)的持久性。2)、數(shù)據(jù)支持類型Memcache對數(shù)據(jù)類型支持相對簡單.Redis有
10、復(fù)雜的數(shù)據(jù)類型.3)、使用底層模型不同它們之間底層實現(xiàn)方式以及與客戶端之間通信的應(yīng)用協(xié)議不一樣。Redis直接自己構(gòu)建了 VM機制,因為一般的系統(tǒng)調(diào)用系統(tǒng)函數(shù)的話,會浪費一 定的時I可去移動和請求。4)、value 大小redis最大可以達到1GB,而memcache只有1MB6。Redis常見的性能問題都有哪些?如何解決 ?1)。Master寫內(nèi)存快照,save命令調(diào)度rdbSave函數(shù),會阻塞主線程的工作, 當(dāng)快照比較大時對性能影響是非常大的,會間斷性暫停服務(wù),所以Master最好不 要寫內(nèi)存快照。2) .Master AOF持久化,如果不重寫AOF文件,這個持久化方式對性能的影響 是最小
11、的,但是AOF文件會不斷增大,AOF文件過大會影響Master重啟的恢復(fù) 速度。Master最好不要做任何持久化工作, 包括內(nèi)存快照和AOF日志文件,特別是不 要啟用內(nèi)存快照做持久化,如果數(shù)據(jù)比較關(guān)鍵,某個Slave開啟AOF備份數(shù)據(jù), 策略為每秒同步一次。3) 。 Master調(diào)用BGREWRITEAOF 重寫AOF文件,AOF在重寫的時候會占 大量的CPU和內(nèi)存資源,導(dǎo)致服務(wù)load過高,出現(xiàn)短暫服務(wù)暫?,F(xiàn)象。4)。 Redis主從復(fù)制的性能問題,為了主從復(fù)制的速度和連接的穩(wěn)定性,Slave和 Master最好在同一個局域網(wǎng)內(nèi)7,redis最適合的場景Redis最適合所有數(shù)據(jù)inmomor
12、y的場景,雖然Redis也提供持久化功能,但 實際更多的是一個disk-backed的功能,跟傳統(tǒng)意義上的持久化有比較大的差別。那么可能大家就會有疑問,似乎Redis更像一個加強版的Memcached,那么何時 使用Memcached,何時使用Redis呢?如果簡單地比較Redis與Memcached的區(qū)別,大多數(shù)都會得到以下觀點:Redis不僅僅支持簡單的k/v類型的數(shù)據(jù),同時還提供list,set, zset, hash等數(shù) 據(jù)結(jié)構(gòu)的存儲。Redis支持?jǐn)?shù)據(jù)的備份,即 masterslave模式的數(shù)據(jù)備份.Redis支持?jǐn)?shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保持在磁盤中,重啟的時候可以 再次加載
13、進行使用。(1)、會話緩存(Session Cache )最常用的一種使用Redis的情景是會話緩存(session cache)。用Redis緩存 會話比其他存儲(如 Memcached )的優(yōu)勢在于:Redis提供持久化。當(dāng)維護一 個不是嚴(yán)格要求一致性的緩存時,如果用戶的購物車信息全部丟失,大部分人都 會不高興的,現(xiàn)在,他們還會這樣嗎?幸運的是,隨著 Redis這些年的改進,很容易找到怎么恰當(dāng)?shù)氖褂肦edis來緩存會話的文檔.甚至廣為人知的商業(yè)平臺 Magento也提供Redis的插件.(2)、全頁緩存(FPC)除基本的會話token之外,Redis還提供很簡便的FPC平臺。回到一致性問題
14、, 即使重啟了 Redis實例,因為有磁盤的持久化,用戶也不會看到頁面加載速度的下 降,這是一個極大改進,類似PHP本地FPC。再次以Magento為例,Magento提供一個插件來使用Redis作為全頁緩存后端。此外,對 WordPress的用戶來說,Pantheon有一個非常好的插件 wpredis, 這個插件能幫助你以最快速度加載你曾瀏覽過的頁面。(3)、隊列Reids在內(nèi)存存儲引擎領(lǐng)域的一大優(yōu)點是提供 list和set操作,這使得Redis能 作為一個很好的消息隊列平臺來使用。Redis作為隊列使用的操作,就類似于本地 程序語言(如 Python)對list的push/pop 操作.如
15、果你快速的在Google中搜索“Redis queues ;你馬上就能找到大量的開源項 目,這些項目的目的就是利用 Redis創(chuàng)建非常好的后端工具,以滿足各種隊列需求。 例如,Celery有一個后臺就是使用Redis作為broker,你可以從這里去查看。(4),排行榜/計數(shù)器Redis在內(nèi)存中對數(shù)字進行遞增或遞減的操作實現(xiàn)的非常好。集合( Set)和有 序集合(Sorted Set)也使得我們在執(zhí)行這些操作的時候變的非常簡單,Redis只是正好提供了這兩種數(shù)據(jù)結(jié)構(gòu)。所以,我們要從排序集合中獲取到排名最靠前 的10個用戶 求們稱之為“user_scores我們只需要像下面一樣執(zhí)行即可:當(dāng)然,這是
16、假定你是根據(jù)你用戶的分?jǐn)?shù)做遞增的排序。如果你想返回用戶及用戶 的分?jǐn)?shù),你需要這樣執(zhí)行:ZRANGE user_scores 0 10 WITHSCORESAgora Games就是一個很好的例子,用Ruby實現(xiàn)的,它的排行榜就是使用Redis 來存儲數(shù)據(jù)的,你可以在這里看到。(5)、發(fā)布/訂閱最后(但肯定不是最不重要的)是 Redis的發(fā)布/訂閱功能。發(fā)布/訂閱的使用場 景確實非常多.我已看見人們在社交網(wǎng)絡(luò)連接中使用,還可作為基于發(fā)布/訂閱的腳本觸發(fā)器,甚至用Redis的發(fā)布/訂閱功能來建立聊天系統(tǒng)!(不,這是真的, 你可以去核實)。Redis提供的所有特性中,我感覺這個是喜歡的人最少的一個,雖然它為用戶提供 如果此多功能.那如何學(xué)習(xí)才能快速入門并精通呢?當(dāng)真正開始學(xué)習(xí)的時候難免不知道從哪入手, 導(dǎo)致效率低下影響繼續(xù)學(xué)習(xí)的信心。但最重要的是不知道哪些技術(shù)需要重點掌
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 請?zhí)?寫作課件
- 愛蓮說精簡課件
- 2024-2025學(xué)年初中同步測控優(yōu)化設(shè)計物理八年級下冊配人教版第9章 第3節(jié) 大氣壓強含答案
- 第三單元(復(fù)習(xí))-三年級語文上冊單元復(fù)習(xí)(統(tǒng)編版)
- 2024年黑龍江省綏化市中考地理真題卷及答案解析
- 西京學(xué)院《運營管理》2021-2022學(xué)年第一學(xué)期期末試卷
- 西京學(xué)院《隨機過程與數(shù)理統(tǒng)計》2021-2022學(xué)年第一學(xué)期期末試卷
- 高質(zhì)量專題教學(xué)模板
- 中班語言我想
- 西京學(xué)院《程序設(shè)計基礎(chǔ)》2021-2022學(xué)年期末試卷
- 腦出血手術(shù)治療
- 延長真空泵機封使用壽命培訓(xùn)課件
- 三峽庫區(qū)三期地質(zhì)災(zāi)害防治工程勘察技術(shù)要求
- 110kV清水潭變電站工程進度計劃橫道圖
- 九版婦產(chǎn)科學(xué)配套教學(xué)課件外陰及陰道炎癥
- 黃大鐵路總體實施性施工組織設(shè)計
- 內(nèi)部控制評價方案內(nèi)控評價方案
- 電子信息產(chǎn)業(yè)園可行性研究分析報告
- GPS天線可靠性測試報告
- 孕期營養(yǎng)與體重管理(孕期學(xué)校)PPT通用課件
- 政務(wù)云平臺建設(shè)方案
評論
0/150
提交評論