常哥带你认识NoSQL和Redis的强大
各位朋友,這篇文章是針對Redis快速了解的內容,為了學好Redis在這里首先跟大家聊聊NoSQL相關內容,有了概念和方向后,我們再學習Redis大家會感覺得心應手。
一
NoSQL你必知的那些事兒
1
什么是NoSQL?
NoSQL是Not Only SQL的縮寫,意思是“不僅僅是SQL”。也是大家通常所說的非關系型數據庫的統稱。NoSQL和我們熟悉的關系型數據庫的作用一樣,都是用來存儲數據的倉庫。但是在使用方法、存儲特點和性能上卻大相徑庭。
2
為什么要使用NoSQL?
在互聯網高速發展的今天,人們對網絡需求日益多樣化。比如我們使用的QQ、微信、抖音、快手、微博等在線互動、朋友圈、點贊、評論等。不管是在數據訪問量和并發量上都是巨大的,這對服務器的數據存儲和實時響應提出了更多的挑戰。比如以前我們非常熟悉的12306購票網站出來的時候,為什么網站一度癱瘓呢?這個與并發的處理速度是有很大關系的。然而傳統的關系型數據庫在面對這些海量的數據存儲,以及高訪問量和高并發讀寫上面明顯不能滿足互聯網的需求了。按照傳統的集群部署增加服務器也難以應對超大規模、高并發、高吞吐量的需求,很多問題已經克服不了了。這時候NoSQL應運而生,從而解決了傳統關系型數據庫所不能解決的問題。
3
NoSQL解決的問題和特點
【1】擴展方便、數據之間沒有直接的關系。
【2】數據模型非常靈活,不用像關系型數據庫那樣提前需要建立字段類型,隨時自定義格式即可存儲。
【3】適合大數據量,高性能的存取。
【4】實現了高并發讀/寫、高可用性。
4
大數據(big data)的定義
我們經常聽說大數據,那么如何理解大數據呢?研究機構Gartner公司把大數據定義為高速、巨量且多變的數據。高速是指數據的生成或者變化速度非???#xff1b;所謂巨量是指數據的規模很大;多變是指數據類型的范圍或數據中所包含的信息范圍非常廣泛。而NoSQL就是適應大數據時代而產生的。
?
二
NoSQL與傳統關系型數據庫對比
我們常見的傳統關系型數據庫(Traditional Relational DataBase,簡稱TRDB)有MySQL、Oracle、SQLServer、SQLite、DB2、Access等。我們將從不同方面做對比,讓大家更多的了解NoSQL的特點。
1
存儲形式:
【1】NoSQL的存儲形式非常多樣化,如鍵-值對、圖形結構、文檔形式、列族形式等。
【2】TRDB的存儲都是用關系型數據模型存儲,典型的就是列表結構,數據之間有強的依賴關系,用二維表的結構完成數據持久化。
2
查詢速度
【1】NoSQL的數據都是在系統的緩存中,不需要專門的SQL層解析,所以查詢效率非常高。
【2】TRDB的數據直接存儲在硬盤中,查詢的時候需要SQL專門的解析,然后進入內存實現查詢,效率低。
3
擴展性
【1】NoSQL沒有表間關系,可以輕松擴展,采用鍵-值對存儲,數據之間沒有耦合性。
【2】TRDB采用關系表存儲,而且表間高耦合,想擴展一個表非常難,而且對其他查詢影響較大。
4
ACID特性支持
【1】NoSQL一般不支持ACID特性(原子性、一致性、隔離性、持久性)它實現最終一致性。
【2】TRDB支持ACID特性,并且具有嚴格的數據一致性。
5
SQL語句支持
【1】NoSQL不支持SQL語句,因為沒有結構性查詢語言。
【2】TRDB支持SQL語句,而且可以支持很復雜的實現。
三
NoSQL數據庫的分布式管理機制
為了實現高可用和高擴展、負載均衡等,NoSQL數據庫在分布式處理環境下,需要對所有服務器上的數據進行處理。常見的部署方式就是通過主(Master)-從(Salve)模式的分布式方案,這類數據庫軟件常見的有MongoDB、Redis等。典型的架構如下:
?
?
這里的Master或一個Slave都是獨立的服務器,我們稱為節點(Node)。Master主要承擔客戶請求處理、給不同的Slave分配數據處理任務,并負責所有Slave的協調一致性等任務。Slave主要負責接收傳送到本地的數據、存儲和計算過程,并把結果返回給調用者。這點,大家可以先簡單了解,后面我們講解集群的時候,這些還會詳細介紹。
四
快速認識Redis的強大
1
Redis的由來
Redis是由意大利Meriza公司的創始人在2009年開發成功的產品,當時是為了解決公司內部的一個實時統計系統的性能,后來經過不斷完善,到現在Redis已經非常普及的被使用。
Redis本身是用C語言開發的一款開源的、高性能的鍵值對存儲數據庫,才用BSD協議,并且支持多種數據類型:字符串、列表、哈希、有序集合、無序集合等。內置復制、Lua腳本、LRU回收、事務等,以及高性能的持久化功能。
?
2
Redis的特性
【1】支持多種計算機編程語言。如C#、Java、C、C++、Python、PHP、Lua、Ruby等。
【2】支持多種數據類型。如String、Hash、List、Set、SortedSet等。
【3】讀/寫速度快、高性能。官方給的數據是11萬次/秒讀取,8.1萬次/秒寫入。因為Redis的操作是在內存中進行的,所以速度的驚人的。實際測試也是這個速度。
【4】支持持久化。Redis每隔一段時間可以自動實現備份,在重啟的時候會自動加載到內存中。主要有AOF和RDB方式,這個后面我們會詳細講到。
【5】高可用主從復制、分布式集群與負載均衡。Redis的Cluster支持分布式,可以輕松實現分布式集群,Redis Sentinel支持高可用。這個我們都在后面的課程中詳細講解。
?
3
Redis的使用場景
【1】做緩存。這個是使用最多的場景。Redis的緩存速度和查詢速度非???#xff0c;使用方便。比如緩存商品信息、購物車等數據。
【2】實現消息隊列系統。Redis運行穩定、速度快,可以實現消息訂閱發布。Redis還有阻塞隊列的命令,使得輕松完成隊列,比如秒殺、搶購等。
【3】做實時系統、消息系統。比如實現在線聊天系統。
【4】實現排行榜應用。Redis實現了有序集合??梢暂p松對百萬級的用戶實現排名。
【5】數據過期處理。我們可以設置數據的過期時間,從而實現過期數據的查找和刪除等。
【6】做大型社交平臺。各種社交APP都可以用Redis做緩存和實時數據處理。
【7】分布式集群架構中的Session分離。采用分布式集群部署,可以滿足web應用系統大規模訪問量的需求。而實現分布式集群部署,就要解決Session的統一問題。而Redis可以實現Session共享機制。
輸入優惠口令「redisgogo」,立省 ¥40 入手
總結
以上是生活随笔為你收集整理的常哥带你认识NoSQL和Redis的强大的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET Core Web APi大文件
- 下一篇: 记一次批量处理数据库中的敏感信息