王子越 廊坊師範學院資訊科技提高班十三期
NoSQL |
我們知道,Redis是一種非關係型資料庫。今天小編來簡單說說關係型資料庫和非關係型資料庫,為Redis的學習做一個指引。
概念 像Mysql、Oracle、SQL Server這些依據關係模型來建立的資料庫叫做關係型資料庫。 除此之外,還有一種資料庫叫做非關係型資料庫(NoSQL)。 關係型資料庫和非關係型資料庫的一個顯著區別是:關係型資料庫中的資料儲存在磁碟上,存取效率較低,但是安全;關係型資料庫中的資料是被儲存在記憶體中的,存取效率高,但是一旦突然斷電,資料就會丟失,所以不安全。
4種類型
列模型 就像關係型資料庫是以一行作為一個記錄,列模型資料庫是以一列作為一個記錄。舉例:Hbase。
鍵值對模型(key-value) 儲存的資料是一個個“鍵值對”。舉例:Redis、MemcacheDB。
文件儲存模型 以一個個文件來儲存資料,跟“鍵值對”類似。舉例:MongoDB。
圖形資料模型 當實體之間的關係太過於複雜時,可以選擇這個。舉例:Neo4J
what? |
Redis是一個開源的,記憶體中的資料結構儲存系統,它可以用作資料庫、快取和訊息中介軟體。 特點 (1)資料模型為key-value。 (2)可持久化。 我們知道,非關係型資料庫因為其將資料儲存在記憶體中的性質,極易造成資料丟失。為了解決這個問題,Redis會自動將資料備份到硬碟中,當斷點情況恢復後,能自動恢復資料。 (3)單執行緒工作模式,採用的是非阻塞I/O多路複用機制 (4)支援主從模式,所以能配置叢集
why? |
(1)針對不經常變動,且如果去資料庫中查詢會耗時久的熱資料,我們可以放入快取,這樣,下次請求響應時就會快很多。有人說,Redis是最好的快取資料庫。 (2)在大併發的情況下,如果一時間很多請求同時訪問資料庫,會造成資料庫癱瘓,解決辦法是現在Redis中操作,等業務結束後(比如秒殺的東西被搶購完了),再將資料分批次存入資料庫中。
how? |
應用場景 (1)快取熱資料 (2)訊息佇列 (3)排行榜、計數器 (5)釋出訂閱
5種資料型別和使用場景
和資料庫的協同工作流程
- 讀取資料時:先去redis中找,如果沒有,去資料庫中找,然後將結果返回並存入redis中一份
- 寫入資料時:先寫入資料庫,然後再同步到redis中
要注意的地方 (1)Redis和資料庫雙寫一致性問題 (2)快取雪崩 (3)快取穿透 (4)redis的併發競爭問題
和Rabbitmq的比較 同樣是能提供訊息佇列服務,兩者的適用場景不同: Redis的特點是輕量級、高併發、延遲敏感,所以適用於即時資料分析,秒殺計數器,快取等。 Rabbitmq的特點是重量級、高併發、非同步,所以適用於批量資料非同步處理、並行任務序列化、高負載任務的負載均衡等。
小結 |