天天看點

redis初識(一)1.了解NoSql2.Redis介紹

redis初識(一)

  • 1.了解NoSql
    • 1.1 什麼是Nosql
    • 1.2 為什麼要使用NoSql
    • 1.3 NoSql資料庫的優勢
    • 1.4 常見的NoSql産品
  • 2.Redis介紹
    • 2.1什麼是Redis
    • 2.2 Redis優勢
    • 2.3 Redis應用場景
    • 2.4 Redis下載下傳

1.了解NoSql

1.1 什麼是Nosql

NoSQL,泛指非關系型的資料庫。随着網際網路web2.0網站的興起,傳統的關系資料庫在處理web2.0網站,特别是

超大規模和高并發的SNS類型的web2.0純動态網站已經顯得力不從心,出現了很多難以克服的問題,而非關系型的

資料庫則由于其本身的特點得到了非常迅速的發展。NoSQL資料庫的産生就是為了解決大規模資料集合,多重資料 種類帶來的挑戰,尤其是大資料應用難題。 NoSQL最常見的解釋是“non-relational”, “Not OnlySQL”也被很多人接受。NoSQL僅僅是一個概念,泛指非關系 型的資料庫,差別于關系資料庫,它們不保證關系資料的ACID特性。

1.2 為什麼要使用NoSql

傳統的資料庫遇到的瓶頸

傳統的關系資料庫具有不錯的性能,高穩定型,久經曆史考驗,而且使用簡單,功能強大,同時也積累了大量的成功案例。在網際網路領域,MySQL成為了絕對靠前的王者,毫不誇張的說,MySQL為網際網路 的發展做出了卓越的 貢獻。

在90年代,一個網站的通路量一般都不大,用單個資料庫完全可以輕松應付。在那個時候,更多的都是 靜态網頁,動态互動類型的網站不多。

到了最近10年,網站開始快速發展。火爆的論壇、部落格、sns、微網誌逐漸引領web領域的潮流。在初 期,論壇的流

量其實也不大,如果你接觸網絡比較早,你可能還記得那個時候還有文本型存儲的論壇程 序,可以想象一般的論壇 的流量有多大。

現在網站的特點:

(1) 高并發讀寫

Web2.0網站,資料庫并發負載非常高,往往達到每秒上萬次的讀寫請求

(2) 高容量存儲和高效存儲

Web2.0網站通常需要在背景資料庫中存儲海量資料,如何存儲海量資料并進行高效的查詢往往是一個 挑戰

(3) 高擴充性和高可用性

随着系統的使用者量和通路量與日俱增,需要資料庫能夠很友善的進行擴充、維護

1.3 NoSql資料庫的優勢

(1) 易擴充

NoSQL資料庫種類繁多,但是一個共同的特點都是去掉關系資料庫的關系型特性。資料之間無關系,這

樣就非常容易擴充。也無形之間,在架構的層面上帶來了可擴充的能力。

(2)大資料量,高性能

NoSQL資料庫都具有非常高的讀寫性能,尤其在大資料量下,同樣表現優秀。這得益于它的無關系性,

資料庫的結構簡單。一般MySQL使用Query Cache,每次表的更新Cache就失效,是一種大粒度的

Cache,在針對web2.0的互動頻繁的應用,Cache性能不高。而NoSQL的Cache是記錄級的,是一種細

粒度的Cache,是以NoSQL在這個層面上來說就要性能高很多了。

(3)靈活的資料模型

NoSQL無需事先為要存儲的資料建立字段,随時可以存儲自定義的資料格式。而在關系資料庫裡,增删

字段是一件非常麻煩的事情。如果是非常大資料量的表,增加字段簡直就是一個噩夢。這點在大資料量 的web2.0時代尤其明顯。

(4) 高可用

NoSQL在不太影響性能的情況,就可以友善的實作高可用的架構。比如Cassandra,HBase模型,通過 複制模型也能實作高可用。

1.4 常見的NoSql産品

1.鍵值(Key-Value)存儲資料庫

相關産品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB

典型應用: 内容緩存,主要用于處理大量資料的高通路負載。

資料模型: 一系列鍵值對

優勢: 快速查詢

劣勢: 存儲的資料缺少結構化

2.列存儲資料庫

相關産品:Cassandra, HBase, Riak

典型應用:分布式的檔案系統

資料模型:以列簇式存儲,将同一列資料存在一起

優勢:查找速度快,可擴充性強,更容易進行分布式擴充

劣勢:功能相對局限

3.文檔型資料庫

相關産品:CouchDB、MongoDB

典型應用:Web應用(與Key-Value類似,Value是結構化的)

資料模型: 一系列鍵值對

優勢:資料結構要求不嚴格

劣勢: 查詢性能不高,而且缺乏統一的查詢文法

4.圖形(Graph)資料庫

相關資料庫:Neo4J、InfoGrid、Infinite Graph

典型應用:社交網絡

資料模型:圖結構

優勢:利用圖結構相關算法。

劣勢:需要對整個圖做計算才能得出結果,不容易做分布式的叢集方案。

redis初識(一)1.了解NoSql2.Redis介紹

2.Redis介紹

2.1什麼是Redis

全稱:REmote DIctionary Server(遠端字典伺服器)。是完全開源免費的,用C語言編寫的, 遵守BCD協定。是一個高性能的(key/value)分布式記憶體資料庫,

基于記憶體運作并支援持久化的NoSQL資料庫,是目前最熱門的NoSql資料庫之一,也被人們稱為資料結構伺服器。

Redis 與其他 key - value 緩存産品有以下三個特點:

(1) Redis支援資料的持久化,可以将記憶體中的資料保持在磁盤中,重新開機的時候可以再次加載進行使用

(2) Redis不僅僅支援簡單的key-value類型的資料,同時還提供list,set,zset,hash等資料結構的存儲

(3) Redis支援資料的備份,即master-slave(主從)模式的資料備份

2.2 Redis優勢

(1) 性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。

(2) 豐富的資料類型 –Redis支援二進制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 資料類型操作。

(3)原子 – Redis的所有操作都是原子性的,同時Redis還支援對幾個操作全并後的原子性執行。

(4) 豐富的特性 – Redis還支援 publish/subscribe, 通知, key 過期等等特性

(5)采用單線程,避免了不必要的上下文切換和競争條件,也不存在多程序或者多線程導緻的切換而消耗 CPU,不 用去考慮各種鎖的問題,不存在加鎖釋放鎖操作,沒有因為可能出現死鎖而導緻的性能消耗;

(6) 使用多路I/O複用模型,非阻塞IO;

2.3 Redis應用場景

(1) 緩存(資料查詢,短連接配接,新聞内容,商品内容等),使用最多

(2) 聊天室線上好友清單

(3) 任務隊列(秒殺,搶購,12306等)

(4) 應用排行榜

(5) 網站通路統計

(6) 資料過期處理(可以精确到毫秒)

(7) 分布式叢集架構中的session問題

2.4 Redis下載下傳

(1)Http://redis.io/ 英文位址

(2)Http://www.redis.cn/ 中文位址